![]() |
HotKey registrieren geht nicht...?
Ich hätte ich da noch ne Frage, und zwar wie ich mit
Delphi-Quellcode:
die Taste "Print" registriere...
RegisterHotKey(Handle, 1, 0, key{vk_F10/Ord('A')});
Ich habe auch schon Probiert mit der "HotKey-Komponente" zu arbeiten, aber diese akzeptiert auch kein Print... Warum reagiert mein Programm eigentlich nur auf HotKeys, welche nicht im Programm, welches im Vordergrund läuft, benutzt werden? Also wenn "A" ein HotKey ist, dann reagiert mein Programm nur auf "A", wenn das Programm im Vordergrund die Taste "A" nicht benutzt... |
Re: HotKey registrieren geht nicht...?
Moin Patrick,
Zitat:
Das Programm, dass einen Hotkey als erstes registriert, bekommt ihn auch zugewiesen. Du könntest in diesem Falle nur noch über einen Keyboard [dp]*Hook*[/dp] Zugriff auf eine bestimmte Tastenkombination nehmen. Bei PRINT möchte ich mal stark annehmen, dass das Betriebssystem sich diesen Hotkey registriert, und dieser somit von einer anderen Anwendung nicht mehr registriert werden kann. Füg' mal nach RegisterHotkey folgende Zeile ein:
Delphi-Quellcode:
dann solltest Du genauer Erfahren, was schiefgegangen ist.
ShowMessage(SysErrorMessage(GetLastError));
[EDIT] Ausserdem verschieb ich den Thread mal nach "Windows API" [/EDIT] |
Re: HotKey registrieren geht nicht...?
Danke, aber da hätte ich noch ein problem, ich weis garnicht wie ich die "Print"-Taste definiere...
Delphi-Quellcode:
Wie sieht das bei der "Print"-Taste aus?
vk_F10 Ord('A')
|
Re: HotKey registrieren geht nicht...?
Drucktaste ist VK_PRINT oder VK_SNAPSHOT
Steht in der Hilfe unter "Virtuelle Tastencodes" |
Re: HotKey registrieren geht nicht...?
Wenn ich den Code
Delphi-Quellcode:
einbaue sagt er mir immer: "Diese Abkürzungstaste ist nicht eingetragen"
ShowMessage(SysErrorMessage(GetLastError));
Funktionieren tut es immernoch nicht... |
Re: HotKey registrieren geht nicht...?
Diese Aktion von Christian war ja auch nur dazu gedacht, um zu sehen warum es nicht klappt. Wie es aussieht gibst du also eine ungültige Taste an.
|
Re: HotKey registrieren geht nicht...?
Moin Patrick,
wie sieht denn Deine RegisterHotkey Zeile aus? |
Re: HotKey registrieren geht nicht...?
Delphi-Quellcode:
So sieht die Zeile aber überall aus....
RegisterHotKey(Handle, 1, 0,vk_print);
|
Re: HotKey registrieren geht nicht...?
Moin Patrick,
dann lass Dir bitte mal den Fehlercode numerisch ausgeben.
Delphi-Quellcode:
Dabei müsste dann 1409 oder 1419 rauskommen.
ShowMessage(IntToStr(GetLastError));
|
Re: HotKey registrieren geht nicht...?
Jo, da kommt die 1419 raus, und was sagt uns das jetzt???
|
Re: HotKey registrieren geht nicht...?
Moin Patrick,
damit hab' ich jetzt mal im PSDK nach der Originalmeldung gesucht: ERROR_HOTKEY_NOT_REGISTERED Ich fand die deutsche Meldung nicht so sonderlich klar. Es hätte auch heissen können, dass er die einzutragende Taste nicht kennt. Allerdings muss ich zugeben, dass mir die andere Meldung, ERROR_HOTKEY_ALREADY_REGISTERED, irgendwie lieber gewesen wäre. Dann hätte man davon ausgehen können, dass die Taste bereits anderweitig registriert ist. So weiss man nur, dass sie nicht registriert wurde, aber nicht warum. Nachdem ich es jetzt ausprobiert habe, wird die Sache für mich noch unerklärlicher, mal abgesehen davon, dass ich davon ausgehe, dass das Betriebssystem sich diese Taste reserviert hat. Ich habe mit
Delphi-Quellcode:
geprüft, ob die Funktion fehlgeschlagen ist, oder nicht. Sie war nicht fehlgeschlagen, denn es wurde keine Meldung gezeigt, allerdings wurde die Taste auch nicht an mein Programm weitergereicht. Auch Modifier einzutragen hat daran nichts geändert.
if not RegisterHotkey(self.Handle,1,0,VK_PRINT) then begin
ShowMessage(SysErrorMessage(GetLastError)); end; Aus welchen Gründen auch immer scheint man VK_PRINT nicht nutzen zu können, ohne das RegisterHotkey eine vernünftige Meldung zurückgibt. Auch das MSDN hat für VK_PRINT HOTKEY keinerlei Informationen anzubieten. Ich vermute mal, das OS registriert den gewünschten Hotkey, fängt dann aber selber die Meldung ab, und leitet sie nicht weiter. |
Re: HotKey registrieren geht nicht...?
Shaut mal in der Windows SDK unter WM_HOTKEY
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz