避免打开文件时自动切换到其他虚拟桌面

Yam*_*man 4 virtual-desktop windows-10

我在 Windows 10 中使用虚拟桌面已经有一段时间了。它工作正常,我发现并希望解决的唯一问题是以下情况:

  • 我在 Sheet.xlsx 或 Doc.docx 上打开了带有 Microsoft Excel 或 Microsoft Word 的Virtual Desktop 1
  • 我有 Virtual Desktop 2并且即将打开另一个工作表/文档 Sheet2.xlsx 或 Doc2.xlsx

在这种情况下,它切换到Desktop 1,因为它已经打开了 Excel / Word,而我希望它在Desktop 2上打开,因为我在那里。当然,我可以将 Sheet2.xlsx / Doc2.xlsx 窗口移动到桌面 2,但我必须从多任务处理中手动完成。

我没有尝试其他应用程序,但我猜这是相同的行为。

无论如何要避免这种行为并让 Windows 打开当前虚拟桌面中的其他文档/工作表?

小智 7

Excel 使用相同的可执行文件打开工作表,这就是它切换桌面的原因。解决方案是打开Excel的第二个实例:

转到桌面 2:

  • 打开开始菜单,搜索Excel
  • 按 ALT + 单击 Excel 符号
  • 当询问“是否要启动新的 Excel 实例?”时,按“是”。

我发现 Excel 在文件资源管理器中打开时仅使用最新的实例打开工作表,即使选择了另一个实例也是如此。

因此,作为解决方法,如果您想稍后在桌面 1 上打开另一个工作表,请转到该桌面上的实例(打开一个新工作表,如果已关闭),然后单击“文件 -> 打开”以在该桌面上打开一个新工作表实例。


Geo*_*e S 5

自 MS Office 2013 起,每个 Office 应用程序的窗口都在可执行文件的单个实例中运行。当实例打开一个新窗口时,任务视图首先切换到现有的应用程序窗口。(我的另一个抱怨是多个 UNDO 命令在多个窗口中按时间顺序回溯,这从来不是我想要的。)

Word 和 Excel

我通过使用命令行选项在单独的实例中运行每个 Word 和 Excel 窗口解决了 Office 2016 中的问题。对于 Word,选项是/N; 对于 Excel,它是/X. 它需要一点额外的启动时间和一点额外的内存。我不会一次运行很多窗口,所以对我来说,减少恶化是值得的。

对于桌面图标、自定义工具栏和其他快捷方式,您可以简单地编辑属性并将选项添加到目标命令行:

"C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE" /X "C:\Data\Weather\Weather Log.xls"

在打开文件时应用该选项(例如通过双击)有点困难。

  1. 打开以管理员身份运行的命令窗口。

  2. 查找与文件扩展名关联的文件类型:

> 关联.xls
.xls=Excel.Sheet.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. 对于您使用的每个文件扩展名(例如 .xlsx),从第 2 步开始重复。具有相同文件类型的文件无需进一步更改。

您可以通过将所有 Excel ftype 定义捕获到 .BAT 文件中,编辑文件以ftype 在每行开头和 /X每个 .EXE 之后添加,并且(对于 .BAT 脚本)更改%1%%1

> ftype | 找到 /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)没有启动新实例的选项。但是,以不同用户身份运行应用程序会创建一个新实例。因此,一种解决方法是为您希望同时打开 PowerPoint 的虚拟桌面创建本地 Windows 用户。这种方案并不理想,因为在打开新的用户/实例之前,您必须记住您已经运行了哪些用户/实例。如果你只有几个,它可能不会太糟糕。

创建每个用户:

设置 > 帐户 > 家庭和其他用户 > [+] 将其他人添加到这台电脑

  1. 我没有此人的登录信息
  2. 添加没有 Microsoft 帐户的用户
  3. 输入新的用户名、密码和安全问题

要创建以指定用户身份启动 PowerPoint 的快捷方式,请编辑快捷方式的属性以使用如下命令:

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

runas提示输入用户密码。 /savecred第一次保存密码,随后使用保存的密码。您可能希望最初使每个快捷方式Run: Normal window,然后将其更改为Run: Minimized

这些快捷方式可以位于 Windows 桌面或自定义工具栏菜单中。PowerPoint 运行后,您可以从那里打开 PPT 文件,也可以从文件资源管理器中拖入文件。如果您长时间处理几个 PPT 文件,您可以为每个文件创建一个快捷方式,指定以哪个用户身份运行。

从 PPT 文件打开 PowerPoint 实例

不幸的是,将 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\""
Run Code Online (Sandbox Code Playgroud)

然后为每个用户创建一个快捷方式,使用如下命令:

C:\bin\PowerPoint_User.bat  user2
Run Code Online (Sandbox Code Playgroud)

如果快捷方式在您的 Windows 桌面上,那么您可以将 PPT 文件拖到它上面。如果您在 中创建快捷方式%USERPROFILE%\AppData\Roaming\Microsoft\Windows\SendTo,那么您可以在 PPT 文件上单击右键并从“发送到”菜单中打开它。无论哪种情况,请记住,每个快捷方式在第一次运行时都会提示输入密码。

(如果您需要调试快捷方式,请将其设置为Run: Normal window,添加cmd /k 到命令中,然后@echo off从脚本中删除。)

  • 对于 Excel 来说,这是一个很好的解决方法,这是我的主要问题。不过,MS 确实应该在 UI 中为此提供一个开关。 (3认同)