Éviter le changement automatique vers un autre bureau virtuel lors de l'ouverture d'un fichier

J’utilise les bureaux virtuels de Windows 10 depuis un moment. Ça fonctionne bien, le seul problème que j’ai trouvé et que j’aimerais résoudre est le scénario suivant :

  • J’ai le Bureau virtuel 1 avec Microsoft Excel ou Microsoft Word ouvert sur Sheet.xlsx ou Doc.docx

  • J’ai le Bureau virtuel 2 et je suis sur le point d’ouvrir une autre feuille / un autre document, Sheet2.xlsx ou Doc2.xlsx

Dans ce cas, cela bascule vers le Bureau 1, parce qu’Excel / Word y est déjà ouvert, alors que je m’attends à ce qu’il s’ouvre sur le Bureau 2 puisque j’y suis. Bien sûr, je pourrais déplacer la fenêtre de Sheet2.xlsx / Doc2.xlsx vers le Bureau 2, mais je dois le faire manuellement depuis le multitâche.

Je n’ai pas essayé d’autres applications, mais je suppose que c’est le même comportement.

Y a-t-il un moyen d’éviter ce comportement et de faire en sorte que Windows ouvre l’autre document / feuille dans le bureau virtuel actuel ?

Depuis MS Office 2013, les fenêtres de chaque application Office fonctionnent dans une seule instance de l’exécutable. Quand une instance ouvre une nouvelle fenêtre, l’Affichage des tâches bascule d’abord vers une fenêtre d’application existante. (Mon autre grief est que plusieurs commandes ANNULER remontent chronologiquement à travers plusieurs fenêtres, ce qui n’est jamais ce que je veux.)

Word et Excel

J’ai résolu le problème dans Office 2016 en utilisant des options de ligne de commande pour exécuter chaque fenêtre Word et Excel dans une instance séparée. Pour Word, l’option est /N ; pour Excel c’est /X. Cela coûte un peu plus de temps de démarrage et un peu plus de mémoire. Je n’exécute pas beaucoup de fenêtres en même temps, donc pour moi la réduction de l’agacement en vaut la peine.

Pour les icônes du bureau, les barres d’outils personnalisées et d’autres raccourcis, vous pouvez simplement modifier les propriétés et ajouter l’option à la ligne de commande cible :

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

Faire en sorte que l’option s’applique quand vous ouvrez un fichier (par ex. par double-clic) est un peu plus difficile.

  • Ouvrez une fenêtre de commande en tant qu’Administrateur.

  • Trouvez le type de fichier associé à une extension de fichier :

assoc .xls
.xls=Excel.Sheet.8

  • Trouvez la commande utilisée pour ouvrir ce type de fichier :

ftype excel.sheet.8
excel.sheet.8=“C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE” “%1”

  • Remplacez cette commande par une qui inclut l’option :

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”

  • Répétez à partir de l’étape 2 pour chaque extension de fichier que vous utilisez (par ex. .xlsx). Celles qui ont le même type de fichier ne nécessitent pas de changement supplémentaire.

Vous pourriez faire un changement en gros en capturant toutes les définitions ftype d’Excel dans un fichier .BAT, en modifiant le fichier pour ajouter ftype au début de chaque ligne et /X après chaque .EXE, et (pour les scripts .BAT) en changeant %1 en %%1

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

[votre éditeur de texte] ftypes.bat
(faites les modifications décrites ci-dessus)

L’exécution du script résultant devrait produire une sortie similaire à :

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”

Autres applications Office

Certaines applications Office, notamment PowerPoint, n’ont pas d’option pour démarrer une nouvelle instance. Cependant, exécuter une application en tant qu’utilisateur différent crée une nouvelle instance. Donc un contournement est de créer des utilisateurs Windows locaux pour autant de bureaux virtuels que vous souhaitez ouvrir PowerPoint simultanément. Ce schéma n’est pas idéal, car vous devez vous souvenir quels utilisateurs/instances sont déjà en cours d’exécution avant d’en ouvrir une nouvelle. Si vous n’en avez que quelques-uns, ce n’est peut-être pas si mal.

Pour créer chaque utilisateur :

Paramètres > Comptes > Famille et autres utilisateurs > [+] Ajouter un autre utilisateur à ce PC

  • Je n’ai pas les informations de connexion de cette personne

  • Ajouter un utilisateur sans compte Microsoft

  • Entrez le nouveau nom d’utilisateur, mot de passe et questions de sécurité

Pour créer un raccourci qui lance PowerPoint en tant qu’utilisateur spécifié, modifiez les propriétés du raccourci pour utiliser une commande telle que :

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

runas demande le mot de passe de l’utilisateur. /savecred enregistre le mot de passe la première fois et utilise le mot de passe enregistré par la suite. Vous pourriez vouloir initialement régler chaque raccourci sur Exécuter : Fenêtre normale, et plus tard le changer en Exécuter : Réduit.

Ces raccourcis pourraient être soit sur le bureau Windows, soit dans un menu de barre d’outils personnalisée. Une fois PowerPoint en cours d’exécution, vous pouvez soit ouvrir un fichier PPT depuis celui-ci, soit glisser un fichier depuis l’Explorateur de fichiers. Si vous travaillez sur quelques fichiers PPT pendant une période prolongée, vous pourriez créer un raccourci pour chaque fichier, en spécifiant quel utilisateur utiliser.

Ouvrir une instance PowerPoint depuis un fichier PPT

Malheureusement, glisser un fichier PPT sur un des raccourcis de bureau décrits ci-dessus ne fonctionnera pas, car runas exige que la ligne de commande complète de PowerPoint soit entre guillemets. Les raccourcis pour ouvrir un fichier PPT directement nécessitent un script intermédiaire pour gérer les guillemets. Créez un script tel que “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\""

Puis créez un raccourci pour chaque utilisateur, avec une commande telle que :

C:\bin\PowerPoint_User.bat  user2

Si le raccourci est sur votre bureau Windows, alors vous pouvez glisser un fichier PPT dessus. Si vous créez le raccourci dans %USERPROFILE%\AppData\Roaming\Microsoft\Windows\SendTo, alors vous pouvez faire un clic droit sur un fichier PPT et l’ouvrir depuis le menu “Envoyer vers”. Dans les deux cas, souvenez-vous que chaque raccourci demandera un mot de passe la première fois qu’il est exécuté.

(Si vous devez déboguer le raccourci, réglez-le sur Exécuter : Fenêtre normale, ajoutez cmd /k au début de la commande, et supprimez @echo off du script.)