避免在開啟檔案時自動切換到其他虛擬桌面

避免在開啟檔案時自動切換到其他虛擬桌面

我在 Windows 10 中使用虛擬桌面已經有一段時間了。它工作正常,我發現並希望解決的唯一問題是以下情況:

  • 我有虛擬桌面1使用 Microsoft Excel 或 Microsoft Word 在 Sheet.xlsx 或 Doc.docx 上開啟
  • 我有虛擬桌面2並即將開啟另一個工作表/文件 Sheet2.xlsx 或 Doc2.xlsx

在這種情況下,它切換到桌面1,因為它已經開啟了 Excel/Word,而我希望它能夠打開桌面2因為我在那裡。當然,我可以將 Sheet2.xlsx / Doc2.xlsx 視窗移至 Desktop 2,但我必須從多工處理手動執行此操作。

我沒有嘗試其他應用程序,但我猜這是相同的行為。

是否有辦法避免這種行為並讓 Windows 開啟目前虛擬桌面中的其他文件/工作表?

答案1

自 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"

runas提示輸入使用者密碼。 /savecred第一次儲存密碼,以後使用已儲存的密碼。您可能希望先建立每個快捷方式運行:普通視窗,然後將其更改為運行:最小化

這些捷徑可以位於 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\""

然後使用以下命令為每個使用者建立一個快捷方式:

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。這將打開一個螢幕,顯示所有打開的窗口,並在底部顯示所有桌面。只需將您想要的 Excel 視窗(例如桌面 2)拖曳到桌面 2 上即可。

相關內容