我用VB写了个hook,思路如下
1.设置hook捕捉键盘信息。
2.在hookProc中进行相应处理后,让信息继续传给相应窗口。
为了让信息传给相应窗口,我使用了sendmessage函数,但是总是失败。SetWindowsHookEx(WH_KEYBOARD, AddressOf hookProc, hInst, Thread)Function hookProc(ByVal lngMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    SendMessage(hwnd, lParam, 0, 0)
End Function

解决方案 »

  1.   

    SendMessage(hwnd, lParam, 0, 0) 你的SendMessage API 写了吗?还有你这个 hwnd 应该就是你要传给相应窗口的句柄, 你的hwnd应该用不同的变量名称,而且在你的模块里宣告Public,否则你直接写hwnd的话,这个值是本窗口的句柄.还有你用到了 AddressOf 这是必需放在 .bas模块里面才能用的,加在Form1里肯定出错.
      

  2.   

    首先谢谢cbm666的关心哦,补充说明一句
    1.ret = SendMessage(hwnd, WM_CLOSE, wParam, lParam)可以正常工作,其余部分应该正常.
    2.我是要在VBA中实现对输入字符的检测,在检测处理结束后,还是将消息传给Excel窗口,所以hwnd也没有问题。
      

  3.   

    再补充一点,
    我使用SendMessage(hwnd, &HC, wParam, lParam)后,终于起作用了,主要是第二个参数msg的设定了。但是,这个消息被发给了窗口(窗口标题变了),却没有传给选中的单元格,怎么办啊?