我被这个问题难住了。我甚至不能用OutputDebugString和debugview看到调试输出--系统就这么挂了。
有一个问题是:如果我在钩子函数中调用SendMessage(),这个消息是回到我的钩子函数中,还是系统只是调用其他处理程序而不是我的?
问题二:我使用钩子过程来捕捉用户点击托盘图标或在图标上移动鼠标时系统发送的消息。
请问使用SetWindowHookEx(WH_CALLWNDPROC, myfunc, hDll, 0)是正确的,还是应该使用线程参数,并将其设置为Shell_NotifyIcon()配置的接收短信的线程?
你在一个库中实现了钩子!?
关于问题1:我不会调用 SendMessage
钩内,因为这 SendMessage
又会让你的钩子被调用。这可能会导致一个递归。
关于问题2:当一个托盘图标被点击时,你使用钩子来获得通知?你是想在任何一个托盘图标被点击的时候通知,还是想在你的托盘图标被点击的时候通知?对于你的托盘图标的通知,你应该使用 Shell_NotifyIcon
再看看 NOTIFYICONDATA::uCallbackMessage
.