KeyHook w innym wątku.

0

Chcę zrobić hook na klawiaturę ale tak, aby metoda wykonywana w momencie otrzymania informacji o wciśniętym klawiszu była wykonywana w innym wątku. Dzięki temu nie zdarzy się, że jakiś klawisz zostanie pominięty przez mój program, dlatego, że moja aplikacja była zajęta czymś innym. Na razie udało mi się zrobić hook wykonywany w głównym wątku programu. Jak zrobić na wątku? Znalazłem informację, że zależnie od wątku w którym zgłoszę hooka, w tym metoda po wciśnięciu klawisza będzie wykonana, jednak tak się nie dzieje. Niezależnie od wątku w którym robię hooka, metoda ta zawsze jest wykonywana w głównym wątku. Proszę o pomoc. Tak wygląda zarys mojego kodu:

        int HookProc(int code, int wParam, ref lParamStruct lParam)
        {
            // ... to chcę aby było wykonane w innym wątku.
        }
        void SetWindowsHook()
        {
            lpMsg msg = new lpMsg();
            
            PeekMessage(out msg, new IntPtr(0), 0, 0, PM_NOREMOVE);
 
            hhook = SetWindowsHookEx(WH_KEYBOARD_LL, HookProc, new IntPtr(0), 0);
 
            while (GetMessage(out msg, new IntPtr(0), 0, 0))
            {
                DefWindowProc(msg.hwnd, msg.message, msg.wParam, msg.lParam);
                if (abortThreadFlag)
                    break;
            }

            UnhookWindowsHookEx(hhook);
        }
        
         /*
         SetWindowsHook jest wowoływane w ten sposób:
         Thread th = new Thread(SetWindowsHook);
         th.Start()*/
 
0

Pomógł jakiś dobry człowiek z Madison :) : http://stackoverflow.com/questions/11374817/keyhook-in-another-thread

1 użytkowników online, w tym zalogowanych: 0, gości: 1