关于线程(私有钩子)的一些疑问
望蓝天 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也不起作用。
请求支援!