做了一个键盘HOOK,键盘捕获函数在DLL中实现。
然后在一个对话框程序A中设好HOOK,就可响应我的键盘消息。键盘响应函数是用来控制另一个窗口B的。
开始我是在响应函数里得到B的句柄,然后控制(即在DLL中得到B的句柄)。一切正常!
后来我想在窗口A中动态设定应该捕获的那个窗口的句柄,然后发送给DLL,设好HOOK后,响应函数就应该按照我自定义的那个句柄的窗口进行操作。为此我是在DLL中建立了一个SetParam()函数用来供窗口A把要捕获窗口句柄传送给DLL的。结果是:我的键盘消息只有在窗口A有焦点时才响应,当不在焦点时,无法响应。我测试过,不调用DLL里的键盘响应函数。不解,求教

解决方案 »

  1.   

    在你的DLL中设置共享段没有?
      

  2.   

    在DLL里,我设了一个全局的变量hwin(类外,头文件设定)专门用来存储窗口A传过来的句柄的。
    然后在DLL键盘处理函数里用这个句柄进行操作。
    问题是我调试时,如果窗口A不在焦点,我按了键盘,命令根本就不到DLL去。窗口A在焦点时正常不知大家遇过这情况没