我通过钩子截获鼠标信息,判断是鼠标右键向下按的时候,通过如下代码发送双击消息
SetCursorPos(ms.p.X, ms.p.Y);
mouse_event(WM_LBUTTONDOWN | WM_LBUTTONUP, 0, 0, 0, 0); mouse_event(WM_LBUTTONUP | WM_LBUTTONUP, 0, 0, 0, 0);
问题是对与托盘里的程序图标是好用的,但是对于其他窗体和桌面上的图标没有效果,
这个鼠标的事件你需要在你要用的界面注册,所以你要是所有的页面都使用的话,你得考虑这个问题.
为什么不在MouseDown事件里做文章,MouseButtons 的枚举判定那个键,在事件里发送双击的消息呢? 我觉得没有必要用钩子 吧。
.Net 不支持 全局钩子,你需要用 C++写一个全局钩子的DLL,然后用.Net 调用才可以。
参见微软下面的说明:
http://support.microsoft.com/kb/318804