我終於找到了符合我要求的解決方案。 Marc的一個鏈接指導我使用Windows上的鉤子,但是我已經嘗試過沒有成功,但是我最終實現了它們的鍵盤和鼠標抓取。
我的Windows代碼使用Windows庫,當我需要阻止輸入創建該調用一個函數線程:
DWORD dwThread;
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)MouseHooker, NULL, 0, &dwThread);
然後我安裝鉤子:
DWORD WINAPI MouseHooker(LPVOID lpParameter) {
HINSTANCE hExe = GetModuleHandle(NULL);
//The thread's parameter is the first command line argument which is the path to our executable.
if (!hExe) //If it fails we will try to actually load ourselves as a library.
hExe = LoadLibrary((LPCSTR) lpParameter);
if (!hExe)
return 1;
//Install the hook as a low level mouse hook thats calls mouseEvent
hMouseHook = SetWindowsHookEx (WH_MOUSE_LL, (HOOKPROC)MouseEvent, hExe, 0);
...
UnhookWindowsHookEx(hMouseHook);
return 0;
}
並在每個鼠標事件代碼被調用:
if (nCode == HC_ACTION && ...) { //HC_ACTION means we may process this event, we may add specific mouse events
//We block mouse input here and do our thing
}
//return CallNextHookEx(hKeyHook, nCode, wParam, lParam);
return 1;
因此,我們不會繼續鉤鏈輸入永遠不會得到處理,工作站被阻止。
代碼按預期在Windows 7上運行。我一直在Windows上使用gtk +,因爲我仍然可以生成我的GUI並使用gdk檢索鼠標輸入。 在GNU/Linux代碼上只能使用GTK +庫,因爲我在抓取輸入時沒有問題。
這是你在找什麼? http://stackoverflow.com/questions/1789883/grab-exclusively-release-mouse-in-application-windows-c甚至這個:http://msdn.microsoft.com/en-us/library/windows/desktop /ms645533(v=vs.85).aspx – marc 2014-10-08 12:09:53