Избегайте автоматического переключения на другой виртуальный рабочий стол при открытии файла

Избегайте автоматического переключения на другой виртуальный рабочий стол при открытии файла

Я уже некоторое время использую виртуальные рабочие столы в Windows 10. Все работает отлично, единственная проблема, которую я обнаружил и хотел бы решить, это следующий сценарий:

  • У меня есть виртуальныйРабочий стол 1с помощью Microsoft Excel или Microsoft Word открыть на Sheet.xlsx или Doc.docx
  • У меня есть виртуальныйРабочий стол 2и собираюсь открыть другой лист/документ, Sheet2.xlsx или Doc2.xlsx

В этом случае он переключается наРабочий стол 1, потому что у него уже открыт Excel / Word, в то время как я ожидаю, что он откроется наРабочий стол 2раз уж я там. Конечно, я мог бы переместить окно Sheet2.xlsx / Doc2.xlsx на Рабочий стол 2, но мне придется делать это вручную из многозадачности.

Я не пробовал другие приложения, но предполагаю, что поведение будет таким же.

Можно ли как-то избежать этого поведения и заставить Windows открыть другой документ/лист на текущем виртуальном рабочем столе?

решение1

Начиная с MS Office 2013, окна каждого приложения Office запускаются в одном экземпляре исполняемого файла. Когда экземпляр открывает новое окно, Task View сначала переключается на существующее окно приложения. (Моя другая претензия заключается в том, что несколько команд UNDO возвращаются в хронологическом порядке в нескольких окнах, что никогда не соответствует моим желаниям.)

Ворд и Эксель

Я решил проблему в Office 2016, используя параметры командной строки для запуска каждого окна Word и Excel в отдельном экземпляре. Для Word это параметр /N; для Excel это /X. Это стоит немного дополнительного времени запуска и немного дополнительной памяти. Я не запускаю много окон одновременно, поэтому для меня уменьшение раздражения того стоит.

Для значков рабочего стола, пользовательских панелей инструментов и других ярлыков вы можете просто отредактировать свойства и добавить параметр в целевую командную строку:

"C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE" /X "C:\Data\Weather\Журнал погоды.xls"

Сделать так, чтобы эта опция применялась при открытии файла (например, двойным щелчком), немного сложнее.

  1. Открыть командное окноработает как администратор.

  2. Найдите тип файла, связанный с расширением файла:

> ассоц. .xls
.xls=Excel.Лист.8
  1. Найдите команду, используемую для открытия этого типа файла:
> ftype excel.sheet.8
excel.sheet.8="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" "%1"
  1. Замените эту команду на команду, включающую опцию:
> ftype excel.sheet.8="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"
excel.sheet.8="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"
  1. Повторите с шага 2 для каждого используемого расширения файла (например, .xlsx). Файлы с тем же типом файла не нуждаются в дальнейших изменениях.

Вы можете выполнить все изменения, собрав все определения ftype Excel в файл .BAT, отредактировав файл, добавив ftypeв начале каждой строки и /Xпосле каждого .EXE, и (для скриптов .BAT) изменив %1на%%1

> ftype | find /i "office16\excel" > ftypes.bat

> [ваш текстовый редактор] ftypes.bat
    (внесите изменения, описанные выше)

Запуск полученного скрипта должен выдать примерно такой вывод:

> ftypes.bat

> ftype dqyfile=C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE /X "%1"
dqyfile=C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE /X "%1"

> ftype Excel.Addin="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"
Excel.Addin="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"

> ftype Excel.Backup="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"
Excel.Backup="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"

> ftype Excel.Chart=C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE /X "%1"
Excel.Chart=C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE /X "%1"

> ftype Excel.Chart.8="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"
Excel.Chart.8="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"

> ftype Excel.CSV="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"
Excel.CSV="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"

> ftype Excel.Macrosheet="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"
Excel.Macrosheet="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"

> ftype Excel.OpenDocumentSpreadsheet.12="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"
Excel.OpenDocumentSpreadsheet.12="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"

> ftype Excel.Sheet.8="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"
Excel.Sheet.8="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"

> ftype Excel.Sheet.12="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"
Excel.Sheet.12="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"

> ftype Excel.SLK="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"
Excel.SLK="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"

> ftype Excel.Template="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"
Excel.Template="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"

> ftype Excel.Template.8="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"
Excel.Template.8="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"

> ftype Excel.Workspace="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"
Excel.Workspace="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"

> ftype Excel.XLL="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"
Excel.XLL="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"

> ftype Excelhtmlfile="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X
Excelhtmlfile="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X

> ftype Excelhtmltemplate="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X
Excelhtmltemplate="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X

> ftype iqyfile=C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE /X "%1"
iqyfile=C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE /X "%1"

Другие офисные приложения

Некоторые приложения Office, в частности PowerPoint, не имеют возможности запустить новый экземпляр. Однако запуск приложения от имени другого пользователя создает новый экземпляр. Поэтому одним из обходных путей является создание локальных пользователей Windows для стольких виртуальных рабочих столов, на которых вы хотите одновременно открывать PowerPoint. Эта схема не идеальна, поскольку вам нужно помнить, какие пользователи/экземпляры у вас уже запущены, прежде чем открывать новый. Если у вас их всего несколько, это может быть не так уж и плохо.

Чтобы создать каждого пользователя:

Настройки > Учетные записи > Семья и другие пользователи > [+] Добавить кого-то еще на этот ПК

  1. У меня нет данных для входа этого человека
  2. Добавить пользователя без учетной записи Microsoft
  3. Введите новое имя пользователя, пароль и контрольные вопросы

Чтобы создать ярлык, который запускает PowerPoint от имени указанного пользователя, отредактируйте свойства ярлыка, чтобы использовать команду, например:

runas  /user:user2  /savecred  "C:\Program Files (x86)\Microsoft Office\root\Office16\POWERPNT.EXE"

runasзапрашивает пароль пользователя. /savecredсохраняет пароль в первый раз и использует сохраненный пароль впоследствии. Вы можете изначально сделать каждый ярлыкЗапуск: Обычное окно, а затем измените его наЗапуск: Свернутый.

Эти ярлыки могут быть либо на рабочем столе Windows, либо в пользовательском меню панели инструментов. После запуска PowerPoint вы можете либо открыть файл PPT оттуда, либо перетащить файл из проводника. Если вы работаете с несколькими файлами PPT в течение длительного времени, вы можете создать ярлык для каждого файла, указав, от имени какого пользователя его запускать.

Открытие экземпляра PowerPoint из файла PPT

К сожалению, перетаскивание файла PPT на один из ярлыков рабочего стола, описанных выше, не сработает, поскольку runasтребует, чтобы вся командная строка PowerPoint была заключена в кавычки. Ярлыки для прямого открытия файла PPT требуют промежуточного скрипта для сортировки кавычек. Создайте скрипт, например, "PowerPoint_User.bat":

:: Usage:  PowerPoint_User  <username>  <PPT filename>
:: Opens a PPT file as a specified user, starting a new PowerPoint instance on
:: the current virtual desktop if that user was not already running PowerPoint.
:: (%~f2 expands %2 to full path with no quotes.  See "call /?".)
@echo off
C:\Windows\System32\runas.exe /user:%1 /savecred "POWERPNT.EXE \"%~f2\""

Затем создайте ярлык для каждого пользователя с помощью такой команды:

C:\bin\PowerPoint_User.bat  user2

Если ярлык находится на рабочем столе Windows, то вы можете перетащить на него файл PPT. Если вы создаете ярлык в %USERPROFILE%\AppData\Roaming\Microsoft\Windows\SendTo, то вы можете щелкнуть правой кнопкой мыши по файлу PPT и открыть его из "Отправить" меню. В любом случае помните, что каждый ярлык запрашивает пароль при первом запуске.

(Если вам нужно отладить ярлык, установите его наЗапуск: Обычное окно, добавьте cmd /kк команде и удалите @echo offиз скрипта.)

решение2

Excel использует тот же исполняемый файл для открытия листов, поэтому он переключает рабочий стол. Решение — открыть второйпримерExcel:

Перейдите на Рабочий стол 2:

  • Откройте меню «Пуск», найдите Excel.
  • Нажмите ALT + щелкните по символу Excel.
  • Нажмите «Да» на вопрос «Хотите ли вы запустить новый экземпляр Excel?»

Я обнаружил, что при открытии листов в проводнике Excel использует только самый новый экземпляр, даже если выбран другой экземпляр.

Поэтому в качестве обходного пути, если вы захотите позже открыть другой лист на Рабочем столе 1, перейдите к экземпляру на этом рабочем столе (откройте новый, если он закрыт), а затем нажмите «Файл -> Открыть», чтобы открыть новый лист в этом экземпляре.

решение3

Одним из решений, позволяющих продолжать запускать Excel в одном экземпляре исполняемого файла (и, следовательно, сохранять возможность копирования и вставки между рабочими книгами), является настройка отображения Excel на всех рабочих столах.

Windows 10:

  1. ОткрытьВид задачи(нажмите Win+Tab)
  2. Выбирать (зависнутьуказатель мыши) виртуальный рабочий стол с открытым на нем Excel.
  3. Щелкните правой кнопкой мыши или нажмите и удерживайте открытое окно Excel, а затем щелкнитеПоказывать окна этого приложения на всех рабочих столах.

Windows 11:

  1. Нажмите наВид задачизначок или нажмите Win+TabЗначок «Просмотр задач»
  2. Щелкните правой кнопкой мышиокно Excel.
  3. ВыбиратьПоказывать окна этого приложения на всех рабочих столах.

решение4

Я только что столкнулся с этой проблемой, и, похоже, ее легко исправить. Я использую Windows 11. Если вы открываете приложения и окна, которые хотите использовать, скажем, на 2 виртуальных рабочих столах, включая 2 таблицы Excel, просто нажмите один раз на кнопку «Рабочие столы» на панели задач. Это вызовет экран, на котором будут показаны все открытые окна и внизу все рабочие столы. Просто перетащите нужное вам окно Excel, скажем, «Рабочий стол 2», на «Рабочий стол 2». Готово!

Связанный контент