天天加油 - 助您成才
简单实现:键盘全局钩子,监视多进程键盘操作。
您正在看的C语言系列是:简单实现:键盘全局钩子,监视多进程键盘操作。。

闲来无事,在WIN2K下用BCB5做了个键盘挂钩小程序,监视全局按键情况。Hook安放和回调函数放在一个单独DLL中,DLL原码如下:

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

extern "C" __declspec(dlleXPort) void __stdcall SetHook(HWND,bool);

LRESULT CALLBACK HookProc(int nCode,WPARAM wParam,LPARAM lParam)

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

static HINSTANCE hInstance; // 应用实例句柄

static HWND hWndMain; // MainForm句柄

static HHOOK hKeyHook; // HOOK句柄

static const myMessage=2000; // 自定义消息号

static const SecondPar=1; // 自定义消息第2参数

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

int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)

{ hInstance=hinst; return 1; }

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

void __stdcall SetHook(HWND hMainWin,bool nCode)

{

if(nCode) // 安放HOOK

{

hWndMain=hMainWin;

hKeyHook=SetWindowsHookEx(WH_JOURNALRECORD,(HOOKPROC)HookProc,hInstance,0);

}

else // 卸下HOOK

UnhookWindowsHookEx(hKeyHook);

}

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

LRESULT CALLBACK HookProc(int nCode,WPARAM wParam,LPARAM lParam)

{

EVENTMSG *keyMSG=(EVENTMSG *)lParam;

if((nCode==HC_ACTION)&&(keyMSG->message==WM_KEYUP))

PostMessage(hWndMain,myMessage,(char)(keyMSG->paramL),SecondPar);

// 向调用窗体发消息myMessage和虚拟键码(char)(keyMSG->paramL)

return((int)CallNextHookEx(hKeyHook,nCode,wParam,lParam));

}

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

应用代码如下:(调DLL)

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

static HINSTANCE hDLL; // DLL句柄

typedef void __stdcall (*DLLFUN)(HWND,bool);

DLLFUN DLLSetHook;

static const myMessage=2000;

static const SecondPar=1;

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

__fastcall TForm1::TForm1(TComponent* Owner):TForm(Owner)

{}

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

排行

  1. 微软官员回眸开发Windows2000的艰
  2. 《Java与模式》前言
  3. 对《Java与模式》中工厂方法模式
  4. DAO编程模式
  5. 局域网中文件夹的共享WindowsNT/
  6. Windows外壳扩展编程之添加右键菜
  7. 用API做的ServerSocket例子
  8. 向word文档中输出表格及图形
  9. 自定义快速报表的打印预览窗口
  10. 一个实用的Delphi屏幕拷贝程序的
  11. 字幕图标控件
  12. Delphi制作数据感知控件之浮想联
  13. Delphi多线程下的ADO编程
  14. 解决了几乎所有Delphi+Access同仁
  15. 全透明窗体(效果比较好)
  16. 通过Delphi建立键盘鼠标动作纪录
  1. 《Java与模式》前言
  2. 对《Java与模式》中工厂方法模式
  3. DAO编程模式
  4. 简单实现:键盘全局钩子,监视多
  5. Visual C# 2005抢先预览
  6. 使用C#编写扩展存储过程
  7. Visual C#编写3D游戏框架示例
  8. 获得汉字字符串拼音首字母 C#版
  9. 80x86保护模式系列教程(5)任务状
  10. 80x86保护模式系列教程(2)分段管
  11. 如何开发自己的操作系统的引导程
  12. win32asm原理
  13. 病毒的编制关键技术(1)
  14. 为PE文件添加新节显示启动信息
  15. 关于PE可执行文件的修改
  16. 定时器时间数据转换子程序分析
  1. 简单实现:键盘全局钩子,监视多
  2. 局域网中文件夹的共享WindowsNT/
  3. Windows外壳扩展编程之添加右键菜
  4. 用API做的ServerSocket例子
  5. 自定义快速报表的打印预览窗口
  6. 一个实用的Delphi屏幕拷贝程序的
  7. 字幕图标控件
  8. Delphi制作数据感知控件之浮想联
  9. Delphi数据库编程教程(三)
  10. Delphi多线程下的ADO编程
  11. 解决了几乎所有Delphi+Access同仁
  12. Delphi编程实现Ping操作
  13. 全透明窗体(效果比较好)
  14. 通过Delphi建立键盘鼠标动作纪录
  15. ServerSocket,ClientSocket控件
  16. 如何在启动机器时自动运行adsl拨

最近更新

  • 推荐阅读
  • C语言系列《简单实现:键盘全局钩子,监视多进程键盘操作。》简单实现:键盘全局钩子,监视多进程键盘操作。