在c++中获得按键时间

问题描述 投票:-1回答:1
if (a == 1) {
        cout << "Press a" << endl;
        Sleep(500); // I tried to do it this way but it didn't work
        if(GetKeyState('A') & 0x80000){
            cout << "Nice" << endl;
    }}

我没有足够的时间去按一个键,也许你有什么解决办法。

c++ winapi time
1个回答
0
投票

@JonathanPotter指出了一个解决方案。

以下是我的一个工作示例代码。你可以尝试一下,看看是否有帮助。

GetAsyncKeyStateGetKeyState 返回 SHORT,所以将返回值与 0x8000 而不是 0x80000.

DWORD WINAPI MyThreadFunc(LPVOID lpParam)
{
    while (TRUE)
    {
        if (GetAsyncKeyState(0x41) & 0x8000) {
            cout << "Nice" << endl;
            return TRUE;
        }
    }
}


int main()
{
    HANDLE threadHdl = CreateThread(NULL, 0, MyThreadFunc, NULL, 0, NULL);
    if (threadHdl == NULL)
    {
        DWORD errCode = GetLastError();
        cout << "CreateThread fails with error: " << errCode;
        return FALSE;
    }

    cout << "Press a" << endl;

    WaitForSingleObject(threadHdl, INFINITE);
}
© www.soinside.com 2019 - 2024. All rights reserved.