Question Comment puis-je déterminer quel processus possède un raccourci clavier dans Windows?


Étant donné un raccourci clavier, comment puis-je trouver quel programme le possède?


80
2017-07-23 09:49


origine


quelle version de windows? - Ivo Flipse♦


Réponses:


Mise en garde: Si vous utilisez Windows 8 ou une version ultérieure, n'utilisez pas cet utilitaire car cela créera des problèmes - voir les commentaires.

Si vous exécutez une version de Windows antérieure à Windows 8, Windows Hotkey Explorer est probablement ce que vous voulez. Ceci est également mentionné dans la question StackOverflow: Découvrez quel processus a enregistré un raccourci clavier global? (API Windows).


44
2017-09-21 13:14



L'explorateur de raccourcis clavier se faufile mal dans Windows 8 - au démarrage, il "appuie" fondamentalement sur chaque raccourci, provoquant toutes sortes de choses bizarres, après quoi il se bloque et doit être tué. - Nathan Ridley
@NathanRidley Ugh. Je voudrais lire votre commentaire avant. C'était une combinaison horrible avec Win8 et Autohotkey. Ce type de dénigrement du clavier aurait aussi causé de sérieux dégâts. - VitalyB
N'utilisez PAS Hotkey Explorer sur Windows 10 non plus. Cela fait la même chose que @NathanRidley. Juste trouvé le chemin difficile. - Artem Russakovskii
Aussi assez vicieux sur Windows 7. Il a changé la résolution de mon moniteur principal à 640x480 (configuration multi-moniteur). - Costa
Je souhaite qu'il y ait un outil plus récent comme Hotkey Exporer qui fonctionne pour Windows 8 et 10 - Flion


Cela fonctionne pour moi dans Win10 (et probablement toutes les versions même vaguement récentes de Windows) ... également copié ici à partir de https://stackoverflow.com/a/43645062/995048 puisque cette page semble être la première dans les résultats de recherche:

Un moyen possible est d'utiliser le Outil Visual Studio Spy ++.

Essayez ceci:

  1. Exécutez l'outil (pour moi, c'est à C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\spyxx_amd64.exe)
  2. Dans la barre de menus, sélectionnez Espion -> Journal des messages ... (ou frapper Ctrl + M)
  3. Vérifier Toutes les fenêtres du système dans le Windows supplémentaire Cadre
  4. Passer à la messages languette
  5. Clique le Tout effacer bouton
  6. Sélectionner WM_HOTKEY dans la liste ou vérifier Clavier dans Groupes de messages (si vous êtes d'accord avec plus de bruit potentiel)
  7. Clique le D'accord bouton
  8. Appuyez sur la touche de raccourci en question (Gagner + R, par exemple)
  9. Sélectionnez le WM_HOTKEY ligne dans le Messages (toutes les fenêtres) fenêtre, clic droit et sélectionnez Propriétés... dans le menu contextuel
  10. dans le Propriétés du message boîte de dialogue, cliquez sur le Poignée de fenêtre link (ce sera le handle de la fenêtre qui a reçu le message)
  11. Clique le Synchroniser bouton sur le Propriétés de la fenêtre dialogue. Cela affichera la fenêtre dans l'arborescence principale de la fenêtre Spy ++.
  12. Sur le Propriétés de la fenêtre boîte de dialogue, sélectionnez le Processus languette
  13. Clique le ID du processus lien. Cela vous montrera le processus (dans mon Gagner + R Cas: EXPLORER)

28
2018-04-27 17:38



Ceci est une excellente réponse, il y a beaucoup d'étapes mais donne des informations parfaitement détaillées. Notez que vous devrez installer SPY ++ d'une manière ou d'une autre et que vous devez exécuter la version 64 bits sur un PC 64 bits ou que cela ne fonctionnera pas. Je pense que la façon la plus simple d’installer SPY ++ consiste à installer Visual Studio 2017, en veillant à sélectionner la charge utile C ++. Pour les non-développeurs, cela pourrait être un peu trop compliqué. - Roy T.
C'est parfait. Elaborate, mais parfait! - angularsen
Très bonne réponse! Juste une note la version 64 bits de Spy ++ ne capture que les messages pour les applications 64 bits, donc si vous ne voyez pas le WM_HOTKEY message dans le Journal des messages Après avoir appuyé sur la touche de raccourci, vous devrez peut-être exécuter la version 32 bits de Spy ++. - Dawid Ferenczy
Le lien devrait être mis à jour pour nouveau site de documentation. Pour Visual Studio 2017, la seule charge utile requise est "Fonctions de base du bureau Visual C ++". Le raccourci clavier spécifique à l'application n'est pas enregistré. Par exemple, Ctrl + B dans MS Word rendra le texte en gras. - Franklin Yu


Cela a probablement été répondu sur Stack Overflow dans ce thread:

Découvrez quel processus a enregistré un raccourci clavier global? (API Windows)

Ici c'est Paukla réponse:

Votre question a piqué mon intérêt, alors j'ai un peu creusé et   alors que, malheureusement, je n'ai pas de réponse appropriée pour vous, je pensais   Je partagerais ce que j'ai.

j'ai trouvé ça exemple de création de hook de clavier (en Delphi)   écrit en 1998, mais est compilable dans Delphi 2007 avec quelques   tweaks.

C'est une DLL avec un appel à SetWindowsHookEx qui passe par un   fonction de rappel, qui peut alors intercepter les frappes de touches: dans ce cas,   il s'amuse avec eux, change le curseur gauche à droite, etc.   Une application simple appelle alors la DLL et rapporte ses résultats en fonction de   un événement TTimer. Si vous êtes intéressé, je peux poster le Delphi 2007 basé   code.

Il est bien documenté et commenté et vous pourriez potentiellement l'utiliser comme   une base de travail où une presse clé va. Si vous pouviez obtenir   le handle de l'application qui a envoyé les touches de touches, vous pouvez   le retrouver de cette façon. Avec cette poignée, vous pourrez obtenir le   informations dont vous avez besoin assez facilement.

D'autres applications ont essayé de déterminer les raccourcis en passant par leur   Raccourcis car ils peuvent contenir une touche de raccourci, qui est juste une autre   terme pour raccourci clavier. Cependant, la plupart des applications ne tendent pas à définir cette   propriété donc il pourrait ne pas retourner beaucoup. Si cela vous intéresse   route, Delphi a accès à IShellLink Interface COM que vous pouvez   utiliser pour charger un raccourci à partir de et obtenir son raccourci clavier:

uses ShlObj, ComObj, ShellAPI, ActiveX, CommCtrl;

procedure GetShellLinkHotKey;
var
  LinkFile : WideString;
  SL: IShellLink;
  PF: IPersistFile;

  HotKey : Word;
  HotKeyMod: Byte;
  HotKeyText : string;
begin
  LinkFile := 'C:\Temp\Temp.lnk';

  OleCheck(CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IShellLink, SL));

  // The IShellLink implementer must also support the IPersistFile
  // interface. Get an interface pointer to it.
  PF := SL as IPersistFile;

  // Load file into IPersistFile object
  OleCheck(PF.Load(PWideChar(LinkFile), STGM_READ));

  // Resolve the link by calling the Resolve interface function.
  OleCheck(SL.Resolve(0, SLR_ANY_MATCH or SLR_NO_UI));

  // Get hotkey info
  OleCheck(SL.GetHotKey(HotKey));

  // Extract the HotKey and Modifier properties.
  HotKeyText := '';
  HotKeyMod := Hi(HotKey);

  if (HotKeyMod and HOTKEYF_ALT) = HOTKEYF_ALT then
    HotKeyText := 'ALT+';
  if (HotKeyMod and HOTKEYF_CONTROL) = HOTKEYF_CONTROL then
    HotKeyText := HotKeyText + 'CTRL+';
  if (HotKeyMod and HOTKEYF_SHIFT) = HOTKEYF_SHIFT then
    HotKeyText := HotKeyText + 'SHIFT+';
  if (HotKeyMod and HOTKEYF_EXT) = HOTKEYF_EXT then
    HotKeyText := HotKeyText + 'Extended+';

  HotKeyText := HotKeyText + Char(Lo(HotKey));

  if (HotKeyText = '') or (HotKeyText = #0) then
    HotKeyText := 'None';

  ShowMessage('Shortcut Key - ' + HotKeyText);
end;

Si vous avez accès à Safari Books Online, Il y a un bien   section sur le travail avec les raccourcis / liens de shell dans le Borland   Guide des développeurs Delphi 6 par Steve Teixeira et Xavier Pacheco. ma   exemple ci-dessus est une version abattue de là et ce site.

J'espère que cela pourra aider!


5
2017-07-23 09:54