RegisterHotKey
-
Hallo dEUs,
ich habe folgenden Code hier irgendwo aus dem Forum entnommen.
UINT m_bHot = GlobalAddAtom("A"); m_bHot = RegisterHotKey(NULL,GlobalAddAtom("A"),NULL,'A');Mit GlobalAddAtom kann ich nicht so richtig was anfangen.
Muss man da nicht noch irgendwie auf eine dll verweisen ?
Kann ich den Code so in OnInitDialog übernehmen ?
In dem Beispiel hier soll dann noch eine MessageBox ausgegeben
werden,wenn denn nun "A" gedrückt wurde.Wie und wo leite ich nun das MessageBox-Ereignis ein?
Muss ich noch zusätzlich mit einem Timer arbeiten?Sorry, wie du siehst habe ich wirklich keinen Plan von dieser
Sache
Irgendwann hab ich mal mit ner Art Hotkey gearbeitet,
das war aber nicht systemweit (glaube mit HANDLE m_hAccel oderso)...Gruß
Chris
-
du musst die Nachricht WM_HOTKEY abfangen.
-
Ok, hab folgendes in die Message_Map
übernommen:ON_MESSAGE(WM_HOTKEY,afunktion)damit ist die Message dann ja mit der
auszuführenden Funktion verknüpft.Dazu noch:
afx_msg LRESULT afunktion(WPARAM wParam, LPARAM lParam);Dann in afunktion() die MessageBox definieren/aufrufen.
Problem: es passiert beim drücken der "A"-Taste nichts.
Irgendwas mach ich noch total falsch
Chris
-
http://www.codeproject.com/system/nishhotkeys01.asp?target=registerhotkey

Da findest Du einen funktionierenden Sourcecode und auch die Erklärung bezüglich "GlobalAddAtom": A normal application can use any value between 0x0000 and 0xBFFF but if you are writing a DLL, then you must use GlobalAddAtom to get a unique identifier for your hot key.
[ Dieser Beitrag wurde am 25.05.2003 um 00:28 Uhr von Erhard Henkes editiert. ]
-
Ich habe es hinbekommen !
GlobalAddAtom hab ich nicht gebraucht.Vielen Dank an euch !
Chris
-
Bislang bekommt mein Programm die Eingaben
wunderbar mit. Lediglich werden die Eingaben
im Fenster, das aktuell den Fokus hat nicht
mehr angezeigt.
Wie kann ich sowohl in meinem Programm,wie
auch im aktuellen Fenster die Eingaben empfangen ?Ich vermute es liegt am ersten Parameter, oder ?
RegisterHotKey(this->m_hWnd,300,NULL,'C');Nur wie änder ich das nun richtig ab ?
Chris
-
RegisterHotKey(m_hWnd,0x1000,NULL,VK_F5); //OnInitDialog //dann nur noch die PreTranslateMessage Funktion überschreiben if (pMsg->message == WM_HOTKEY){ switch (pMsg->wParam) { case 0x1000: //Identifier von deinem Hotkey //Aktion.. break; } }
-
Hi,
ich habs noch net hinbekommen.
PreTranslateMessage habe ich jetzt eingebunden.
Allerdings werden die Tasteneingaben aus z.B.
Word immernoch von meinem Programm abgefangen
und erscheinen somit nicht mehr in Word
Tastatureingabe in Word->Meinprog im Hintergrund->
Buchstabe löst Funktion in meinem Programm aus
->in Word kommt Buchstabe nicht mehr an....
Chris
-
dann registrier halt auch keine hotkeys, die ohne zusatztasten funktionieren ... hotkey haben normalerweise die form Strg + x oder Alt + x o.ä.
-
Also ist RegisterHotKey dafür nicht gedacht ?!
Gibts nen anderen Weg die Tasten systemweit zu
loggen und dennoch im aktuellen Fenster anzuzeigen ?Ciao Chris
-
Hi!
Geh einfach auf www.google.de und gib "Keylogger mfc" oder "Keylogger winapi" ein. Der findet da 1000 Seiten
mfg mike