私は c++ プログラミングが初めてで、マウスとキーボードが一定期間触れられていないことを検出する小さなレポート ツールを作成しようとしています。
マウスフックコードの例を探していて、これを見つけました
#define _WIN32_WINNT 0x0400
#pragma comment( lib, "user32.lib" )
#include <windows.h>
#include <stdio.h>
HHOOK hMouseHook;
__declspec(dllexport) LRESULT CALLBACK KeyboardEvent (int nCode, WPARAM wParam, LPARAM lParam)
{
MOUSEHOOKSTRUCT * pMouseStruct = (MOUSEHOOKSTRUCT *)lParam;
if (pMouseStruct != NULL)
printf("Mouse position X = %d Mouse Position Y = %d\n", pMouseStruct->pt.x,pMouseStruct->pt.y);
return CallNextHookEx(hMouseHook,
nCode,wParam,lParam);
}
void MessageLoop()
{
MSG message;
while (GetMessage(&message,NULL,0,0)) {
TranslateMessage( &message );
DispatchMessage( &message );
}
}
DWORD WINAPI MyMouseLogger(LPVOID lpParm)
{
HINSTANCE hInstance = GetModuleHandle(NULL);
if (!hInstance) hInstance = LoadLibrary((LPCSTR) lpParm);
if (!hInstance) return 1;
hMouseHook = SetWindowsHookEx (
WH_MOUSE_LL,
(HOOKPROC) KeyboardEvent,
hInstance,
NULL
);
MessageLoop();
UnhookWindowsHookEx(hMouseHook);
return 0;
}
int main(int argc, char** argv)
{
HANDLE hThread;
DWORD dwThread;
hThread = CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)
MyMouseLogger, (LPVOID) argv[0], NULL, &dwThread);
if (hThread)
return WaitForSingleObject(hThread,INFINITE);
else return 1;
}
私はこれをコンパイルしてテストとして実行しました。その後、いくつかのことをテストし始めました。それの地獄のためにc ++とg ++でコンパイルされました。pMouseStruct を削除し、代わりに「if(lParam)」をテストしました。すべてが順調に進んでいるようで、遅くなってきたので、翌日に戻ることにしました。
今日、Windows を起動したとき、マウスを動かしたり、キーボードで何かを入力したりすることができませんでした。ウィンドウ内の入力 (通常およびセーフ モード) が機能しなくなったようです。これを修正する方法はありますか?
Windows 7 64ビットを使用しています。
これまでのところ、次のことを試しました。
- 最近のオーバークロック調整を元に戻しました。
-コードをプレイする前の状態に戻し、再コンパイルして実行しました。
- グーグル。
- システム ドライブの chkdsk /f。
- システムの復元 (raid は好きではありません)
- 友人から user32.dll をコピーしました。
私の無知を許してください:-)