2

アプリにグローバル マウス フックがありますが、(一部のコンピューターでは) マウス フック プロシージャ (MouseHookProc) が突然呼び出されなくなりました。 win7 の LowLevelHooksTimeout を処理する

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
internal static extern IntPtr SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hMod, uint dwThreadId);

private void AddMouseHook()
{
    MouseHookProcedure = new User32.HookProc(MouseHookProc);
    hMouseHook = SetWindowsHookEx(WH_MOUSE_LL, MouseHookProcedure, (IntPtr)null, 0);
}

修正は、新しいスレッドにマウス フックを追加することのようですが、それを行うと、最初からマウス フックが呼び出されず、SetWindowsHookEx が値 > 0 を返すことを確認できるため、フックが適切に追加されましたが、別のスレッドから追加された場合、「MouseHookProc」は一度も呼び出されず、メインスレッドから開始された場合は問題ありませんが、しばらくすると消えます(ほとんどの場合、マウスがフリーズする傾向がある重い処理の後、その後「 MouseHookProc" はもう呼び出されません

ThreadStart ts = new ThreadStart(AddMouseHook);
Thread th = new Thread(ts);
th.Start();
4

0 に答える 0