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;
}}
我没有足够的时间去按一个键,也许你有什么解决办法。
@JonathanPotter指出了一个解决方案。
以下是我的一个工作示例代码。你可以尝试一下,看看是否有帮助。
GetAsyncKeyState
和 GetKeyState
返回 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);
}