145 Stimmen

Herausfinden, welcher Prozess einen globalen Hotkey registriert hat (Windows API)

Soweit ich herausfinden konnte, bietet Windows keine API-Funktion an, um festzustellen, welche Anwendung einen globalen Hotkey registriert hat (über RegisterHotkey). Ich kann nur herausfinden, dass ein Hotkey registriert ist, wenn RegisterHotkey false zurückgibt, aber nicht, wem der Hotkey "gehört".

Könnte es in Ermangelung einer direkten API einen Umweg geben? Windows verwaltet den Handle, der mit jedem registrierten Hotkey verknüpft ist - es ist ein wenig verwirrend, dass es keine Möglichkeit gibt, an diese Informationen zu gelangen.

Beispiel für etwas, das wahrscheinlich nicht funktionieren würde: Senden (simulieren) einer registrierten Tastenkombination, dann Abfangen der Tastenkombination-Nachricht, die Windows an den Prozess sendet, der sie registriert hat. Erstens glaube ich nicht, dass das Abfangen der Nachricht das Handle des Zielfensters aufdecken würde. Zweitens, selbst wenn es möglich wäre, wäre es eine schlechte Sache, da das Senden von Hotkeys alle möglichen potenziell unerwünschten Aktivitäten von verschiedenen Programmen auslösen würde.

Es ist nichts Kritisches, aber ich habe häufig Anfragen nach einer solchen Funktion gesehen und bin selbst Opfer von Anwendungen geworden, die Hotkeys registrieren, ohne dies irgendwo in der Benutzeroberfläche oder in der Dokumentation zu erwähnen.

(Ich arbeite in Delphi und bin nicht mehr als ein Lehrling in WinAPI, bitte seien Sie freundlich).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X