Avatar billede narrr Nybegynder
23. februar 2004 - 21:41 Der er 1 kommentar og
1 løsning

Global genvejstast

Hej!
Jeg skal have lave en genvejstast i mit program, som virker lige meget hvilket program der har fokus. Altså hvis man fx trykker CTRL+ALT+S, så skal mit program opfange dette tastetryk.
    Jeg ved ikke om det er den rigtige måde at gøre det på, men jeg ville løse problemet med et hook.. Problemet er bare, at når programmet har fokus kan det godt fange tastetryk, men hvis man deaktiverer det og aktiverer det igen, så kan det ikke fange tastetryk!
  Kode(WIN32API):
---
HHOOK hook;
LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam)
{
    if(code>=0) {
        if(wParam == VK_RETURN)
            MessageBox(0, "You pressed enter!", 0, 0);
    }

    return CallNextHookEx(hook, code, wParam, lParam);
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch(msg) {
        case WM_CREATE:
            {
                hook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, GetModuleHandle(0), 0);
                if(!hook) {
                    MessageBox(hwnd, "Hook failed!",0,0);
                    PostQuitMessage(0);
                }

                return 0;
            }
        case WM_DESTROY:
        case WM_CLOSE:
            UnhookWindowsHookEx(hook);
            PostQuitMessage(0);
            break;
    }

    return DefWindowProc(hwnd, msg, wParam, lParam);
}
---
Der sker ikke andet end initialization af vindue i WinMain.

Hvis man kan gøre det på en nemmere måde end med et hook er jeg naturligvis også interesseret i at høre om det.
Avatar billede driis Nybegynder
23. februar 2004 - 21:46 #1
Avatar billede narrr Nybegynder
23. februar 2004 - 21:52 #2
jamen det virker jo helt perfekt
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





White paper
Tidsbegrænset kampagne: Overvejer du at udskifte eller tilføje printere i din forretning? Vi kan tilbyde én eller flere maskiner gratis