RSS Feed

Posts Tagged ‘hook’

  1. 关于系统钩子的一些问题

    十二月 16, 2008 by bborn

    上个周末闲来无事
    想来做了一个computer-based training (CBT)全局系统钩子(global hook)
    本来想着挺简单的事情
    没想到其中碰到了很多问题
    现在小小总结一下
    包括我遇到的问题,想到的原因及找到的解决办法
    我的系统环境是Vista Ultimate sp1, Visual Studio 2005 sp1

    一般来说,做一个全局钩子,需要dll
    恩 差不多是这样
    不过对于鼠标键盘钩子是例外
    我们还是老老实实的做dll吧
    调试发现只能收到自己程序的消息
    奇了怪了, 全局钩子变成了本地钩子,为什么

    做一个全局钩子
    需要做一个共享内存
    我想主要是为了保存一个窗口句柄
    以便接收消息
    当然也可以不这么做
    像这篇文章Using Window Messages to Implement Global System Hooks in C#

    SetProp(GetDesktopWindow(), “WILSON_HOOK_HWND_CBT”, destination);
    HWND dstWnd = (HWND)GetProp(GetDesktopWindow(), “WILSON_HOOK_HWND_CBT”);

    不过我实在不知道他干嘛要这么费劲

    我是使用#pragma data_seg()来跨进程保存数据的
    使用时要注意,变量要初始化

    开始的时候,我是在dll里的钩子的回调里写trace
    这实在是个低级错误
    后来改到主窗口的消息处理函数里
    发现在调试的时候只能收到自己程序和vc的消息
    想想难道在调式的时候,调式的程序挂在vc下面
    而收不到别人的消息?(后来发现这个推断是错误的)
    不管怎样 这次程序基本上可以工作了

    做完这些工作 以为万事大吉
    (更多…)