我想在後臺線程上設置鼠標鉤。LowLevelMouseProc在後臺線程
delegate IntPtr LowLevelMouseProc(int nCode, IntPtr wParam, IntPtr lParam);
LowLevelMouseProc _proc = HookCallback;
SetWindowsHookEx(PInvoke.WH_MOUSE_LL, _proc, IntPtr.Zero, 0);
和
IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam){/**/}
如果我把這個主窗口線程一切正常,直到窗口有做這會導致鼠標停止響應這項工作的持續時間更復雜的工作(更新多個孩子例如在面板中)。
如果我開始一個新的線程,並從那裏設置鉤子,問題是線程簡單地退出後設置鉤子和回調函數永遠不會被調用。
有沒有辦法讓線程活着? 或者,如果存在另一種方法來連接鼠標而不冒着不響應的行爲風險?
我不期而遇注意到,當工作線程執行
GetMessage(out msg, new IntPtr(0), 0, 0);
沒有消息不斷收到,但線程被保持存活所需的目的。 另外我需要一個優雅的方式來關閉線程,但GetMessage永遠不會返回。
我不完全理解所有這些信息,我只是希望能夠連接鼠標並防止凍結。
任何幫助appriciated。