0

私は 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 をコピーしました。

私の無知を許してください:-)

4

1 に答える 1

0

私はWindows 7を再インストールすることになり、すぐにさらに奇妙な問題に遭遇しました。それ以来、スタンバイがさまざまなものを破損していることを発見し、使用をやめました。現在、スリープ状態になったことのない Windows 7 の新規インストールを実行しています。今日まで奇妙な問題はまだありません:-)

于 2014-07-09T03:39:51.297 に答える