当我在另一个线程中调用它时,SetWindowsHookEx无法正常工作?

时间:2017-07-03 08:02:48

标签: c# .net pinvoke setwindowshookex

private void Form1_Load(object sender, EventArgs e)
{
    //intLLKey = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]).ToInt32(), 0);
    // it's working, but I wanna to call it in another thread 

    // not working
    new TaskFactory().StartNew(() =>
    {
        intLLKey = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]).ToInt32(), 0);
    });
}

[DllImport("user32", EntryPoint = "SetWindowsHookExA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
public static extern int SetWindowsHookEx(int idHook, LowLevelKeyboardProcDelegate lpfn, int hMod, int dwThreadId);
public const int WH_KEYBOARD_LL = 13;
public int LowLevelKeyboardProc(int nCode, int wParam, ref KBDLLHOOKSTRUCT lParam)
{
    ...
}

我不知道为什么,我真的想在另一个主题中用某种原因来调用它

0 个答案:

没有答案