C#/Windows API高手进,谁能给我看一个全局鼠标钩子的示例源码?

最好是winform项目类型,运行程序以后,点击上面一个按钮,则可以在标题栏实时显示鼠标相对于整个屏幕的坐标。最好再次点按钮可以关闭钩子。
要能直接运行的哦,别空讲什么原理之类,一来代码不是那么好懂,二来网上讲原理的很多但是示例源码比较少。

问题: C#/Windows API高手进,谁能给我看一个全局鼠标钩子的示例源码?

回答:关键代码(完整程序见附件:VS2010 基于.net framework 2.0)

        private int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            Win32Api.MouseHookStruct MyMouseHookStruct = (Win32Api.MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(Win32Api.MouseHookStruct));
            if (nCode < 0)
            {
                return Win32Api.CallNextHookEx(hHook, nCode, wParam, lParam);
            }
            else
            {
                this.Point = new Point(MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y);
                return Win32Api.CallNextHookEx(hHook, nCode, wParam, lParam);
            }
        }

祝你成功!


追问

谢谢,我下载了这个项目,直接运行里面的exe是可以的,但我运行项目就没效果,请问你是不是编译后又改了什么了,我看里面有两个断点。能否再传一次代码?另外,我看你的ide是vs2010,那能否用.net 4.0?

追答

Ctrl+F5运行

追问

奇怪了,确实是你说的那样就可以了,为什么呢,
我还从来没注意到运行方式能影响到结果。

追答

F5是调试运行,程序中的断点就会起作用
Ctrl+F5是直接运行,不调试

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答