Keyboardhook
-
kann ich die Post dann mit PeekMessage abfangen?
-
ok ihr habt recht ich mach es doch mit nem verstecktem Fenster:
// in WinMain HWND hwndDia = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), 0, KeyboardDlg); SetupHook(hwndDia); // der Dialog BOOL CALLBACK KeyboardDlg(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_INITDIALOG: return TRUE; case WM_USER + 2: if ((wParam>='A' && wParam<='Z') || (wParam>='0' && wParam<='9')) { char c = static_cast<char>(wParam); MessageBox(0, (LPCSTR)c, (LPCSTR)c, 0); } return TRUE; } return FALSE; }warum bekomme ich keine MessageBox wenn ich ne taste drücke?
-
der Hook ist der aus der FAQ
-
Du kannst nicht einfach so einen char zu einem string casten
-
das hat aber ichts damit zu tun WM_USER+2 wird nicht aufgerufen
-
einsichtig schrieb:
warum bekomme ich keine MessageBox wenn ich ne taste drücke?
einsichtig schrieb:
das hat aber ichts damit zu tun WM_USER+2 wird nicht aufgerufen
Wer schickt denn die Nachricht "WM_USER+2" ?
Und wann wird sie gesendet?
Und an welches Fenster?Ohne diese Information funktioniert unsere Wahrsager-Kugel schlicht und einfach nicht um Deine Frage beantworten zu können

Daher nochmal: Ich habe den Eindruck, daß:
-die Grundlagen der Windows-Nachrichten (Messages) nicht verstanden worden sind und
-ein Keyboard-Hook aufgrund der bisher hier festgestellten "Mängel" wahrscheinlich der völlig falsche Ansatz ist (in etwa so wie mit Kanonen auf Spatzen schießen)Nimm eine Nachrichtenschleife und werte in den Proceduren die Nachrichten WM_KEYDOWN (oder WM_CHAR) aus.
Martin
P.S.: Daß ein Hook in einer FAQ steht, heißt noch lange nicht, daß Du ihn unbedingt einsetzen mußt...
-
char c = static_cast<char>(wParam); MessageBox(0, (LPCSTR)c, (LPCSTR)c, 0);lol.
Mmacher schrieb:
Wer schickt denn die Nachricht "WM_USER+2" ?
Und wann wird sie gesendet?
Und an welches Fenster?Ohne diese Information funktioniert unsere Wahrsager-Kugel schlicht und einfach nicht um Deine Frage beantworten zu können
einsichtig schrieb:
der Hook ist der aus der FAQ
lol.
-
ohh wie toll supermeister ascda kann natürlich nur lollen und der andere ließt meinen Code nicht.
HWND hwndDia = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), 0, KeyboardDlg); SetupHook(hwndDia);ist doch eindeutig welches Fenster oder hwnd das ist oder nicht?
-
extern "C" __declspec (dllimport) BOOL CALLBACK SetupHook (HWND) ; extern "C" __declspec (dllimport) BOOL CALLBACK UninstallHook (void) ;so habe ich sie deklariert im Programm stimmt doch oder?
Ist echt wichtig
-
irgendwie hängt sich der Dialog auf.
Wenn ich mit der Maus drüber gehe kommt die ganze zeit die Sanduuhr dann kackt es ab.
Hier der Dialog Code:
warum hängt sich der Dialog auf?in Win main: HWND hwndDia = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), 0, KeyboardDlg); ShowWindow(hwndDia, TRUE); SetupHook(hwndDia); das ist der Callback BOOL CALLBACK KeyboardDlg(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_INITDIALOG: return TRUE; case (WM_USER + 2): if ((wParam>='A' && wParam<='Z') || (wParam>='0' && wParam<='9')) { char c = static_cast<char>(wParam); MessageBox(0, (LPCSTR)c, (LPCSTR)c, 0); } return TRUE; } return FALSE; }
-
einsichtig schrieb:
Wenn ich mit der Maus drüber gehe kommt die ganze zeit die Sanduuhr dann kackt es ab.
Dürfen Nicht-Fäkal-Programmierer auch etwas zur Lösung beitragen?
Wenn ja, dann poste mal den Code (nicht Kot!) der WinMain!