web-dev-qa-db-fra.com

Épingler des applications sur plusieurs bureaux dans Windows 10

L'une des principales nouvelles fonctionnalités de Windows réside dans le fait que plusieurs bureaux "virtuels" sont désormais pris en charge de manière native, ce qui vous permet d'organiser des collections de fenêtres ensemble et de séparer des groupes de tâches.

C'est bon.

Vous pouvez déplacer les fenêtres entre les ordinateurs de bureau en cliquant sur le bouton "tâches" puis en cliquant avec le bouton droit de la souris sur une fenêtre d'application et en sélectionnant "Déplacer vers ...".

C'est un peu maladroit et pas si bon.

J'ai deux écrans et j'aime souvent regarder un film sur mon deuxième écran, que ce soit dans un navigateur Web ou un lecteur multimédia, alors que j'ai un navigateur et quelques autres applications sur l'écran principal. Faire cela ne pose pas de problème dans ma configuration actuelle, cela fonctionne.

Avec l'avènement des bureaux virtuels, je voulais installer le navigateur sur un bureau virtuel et une autre application sur un autre bureau virtuel, tout en conservant la possibilité de regarder la vidéo lorsque je change de bureau, ce qui est visible sur both virtual ordinateurs de bureau. Utiliser l'application Film & TV par défaut pour lire une vidéo, puis passer à un autre bureau entraîne simplement l'arrêt de votre vidéo sans aucun avertissement.

Ce n'est pas bien.

J'espérais que les deux moniteurs disposeraient de leur propre bureau virtuel ou d'une option "épingler tous les bureaux" similaire à la fonctionnalité de "fenêtre collante" que j'ai vue dans de nombreux gestionnaires de fenêtres basés sur Linux.

Y a-t-il un moyen d'y parvenir?

68
Mokubai

Cette fonctionnalité a été publiée dans l’une des nombreuses "Améliorations apportées au bureau virtuel" dans/ Windows 10 Anniversary Update (Build 14316):

Vous pouvez maintenant épingler une fenêtre afin qu’elle soit disponible sur tous les bureaux. Pour ce faire, lancez Task View, puis cliquez avec le bouton droit de la souris sur la fenêtre que vous souhaitez épingler et choisissez «Afficher cette fenêtre sur tous les bureaux». Essayez d’épingler Skype ou Groove Music pour qu’ils soient toujours à portée de main. Et si vous avez une configuration multi-mon, vous pourrez profiter de la possibilité d’appliquer votre application de messagerie sur le deuxième moniteur, quel que soit le bureau sur lequel vous basculez.

 enter image description here

92
Daniel Ballinger

Oui. [presque :)] Chaque fenêtre avec l'attribut WS_EX_TOOLWINDOW est visible sur tous les bureaux.

Autohotkey est une aide précieuse à cet égard. Exemple de script - MyLoop.ahk:

 WS_EX_TOOLWINDOW: = 0x00000080 
 Boucle 
 {
 WinSet, ExStyle, +% WS_EX_TOOLWINDOW%, ahk_class Chrome_WidgetWin_1 
 Veille, 100 
. } 

Mettez ceci dans le démarrage de Windows et la fenêtre de Google Chrome "collera" à tous les bureaux virtuels.

Ou assignez ceci comme raccourci clavier: Exemple de script - MyHotkeys.ahk:

 WS_EX_TOOLWINDOW: = 0x00000080 
 + MButton :: WinSet, ExStyle, ^% WS_EX_TOOLWINDOW%, A 
 ^ MButton :: WinSet, AlwaysOnTop, bascule, A 

Mettez ceci au démarrage de Windows et vous pouvez basculer l'état "collant" pour n'importe quelle fenêtre en appuyant sur Maj + clic du milieu, cliquez dessus.

Touche d'ajout - Ctrl + clic du bouton du milieu basculera l'état "le plus haut". Très utile.

PS: les applications modernes (par exemple, Windows 10 Calculator) l’ignorent. Je ne sais pas pourquoi Mais pour la fenêtre Windows Explorer et la plupart des "anciennes applications", tout fonctionne correctement

17
IDj

Basé sur la solution @idj ci-dessus, voici comment procéder en C:

exstyle = GetWindowLongPtr(hwndPtr, GWL_EXSTYLE);
exstyle |= WS_EX_TOOLWINDOW
SetWindowLongPtr(hwndPtr, GWL_EXSTYLE, exstyle);
1
Noitidart