C# winform使用钩子 SetWinDowsHookEx
在网上下载了一个鼠标钩子的代码,运行后很正常。然后把代码复制到自己的程序中就没有效果,跟踪后发现是在我的程序里时SetWinDowsHookEx返回的总是0,也就是失败,...
在网上下载了一个鼠标钩子的代码,运行后很正常。然后把代码复制到自己的程序中就没有效果,跟踪后发现是在我的程序里时SetWinDowsHookEx 返回的总是0,也就是失败,但是我同时运行他的程序跟我的程序,代码一样的情况下 他的就可以正常,我的就失败,,不知道原因,谁有类似的情况或者遇见过这种问题提供下解决办法,,
问题主题SetWinDowsHookEx 总返回0 展开
问题主题SetWinDowsHookEx 总返回0 展开
3个回答
展开全部
到你的项目属性页 - 调试 - 把 “启用Visual Studio 宿主进程”那个√去掉。再试试。就OK 啦。
追问
我用的2010,不是这个问题,试过了不行,
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用WINDOWS API函数代替获取当前实例的函数:
用:
[DllImport("kernel32.dll")]
public static extern IntPtr GetModuleHandle(string name);
GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName)
代替:
Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0])
当作 SetWindowsHookEx 的第三个参数: IntPtr hInstance
用:
[DllImport("kernel32.dll")]
public static extern IntPtr GetModuleHandle(string name);
GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName)
代替:
Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0])
当作 SetWindowsHookEx 的第三个参数: IntPtr hInstance
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询