关于线程(私有钩子)的一些疑问

望蓝天 2017-11-23 08:33:53
想让一个作为MDI父窗体的响应客户区的鼠标点击消息,其实目的是想让双击客户区打开文件打开对话框,用来打开文件用。

这时候又有一个问题了,怎么获取客户区。是除去菜单、工具栏、pane停靠框剩下的客户区哦!

1、捕捉消息,重写winProc无效 2、用IMessageFilter有效 3、用全局钩子有效[/color]

当尝试线程钩子的时候遇到的问题:
全局:
this.m_pKeyboardHook = SetWindowsHookEx(13,this.m_KeyboardHookProcedure, pInstance, 0);
线程:
//this.m_pKeyboardHook = SetWindowsHookEx(2, this.m_KeyboardHookProcedure, IntPtr.Zero, GetCurrentThreadId());

我在winform主线程调用hookStart() 主线程id为8或9,GetCurrentThreadId()返回的id值为4011,很大的数。但是如果我通过传参将注册钩子函数中的参数设置为主线程的id时,就会报错,getwin32Lasterror()返回访问句柄无效。

在这里用Threading.Thread.CurrentThread.ManagedThreadId也不起作用。

请求支援!
...全文
103 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧