完整逻辑:
通过process start 打开一个第三方exe(当然这不是关键)。
通过SetWindowsHookEx(引用user32) 设置一个CBT类型的钩子,判断第三方应用最小化了,做出响应。
hHook = SetWindowsHookEx((int)HookType.WH_CBT, new HookProc(CBTHookCallback), GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), threadid);
第四个参数threadid,不管是设置为系统级 0 ,还是第三方应用的threadid,hHook总是返回0???补充一点:如果threadid 换成 AppDomain.GetCurrentThreadId() 钩自己,没有问题。
GetLastError = (1428) -没有模块句柄无法设置非本机的挂接。C#钩子
通过process start 打开一个第三方exe(当然这不是关键)。
通过SetWindowsHookEx(引用user32) 设置一个CBT类型的钩子,判断第三方应用最小化了,做出响应。
hHook = SetWindowsHookEx((int)HookType.WH_CBT, new HookProc(CBTHookCallback), GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), threadid);
第四个参数threadid,不管是设置为系统级 0 ,还是第三方应用的threadid,hHook总是返回0???补充一点:如果threadid 换成 AppDomain.GetCurrentThreadId() 钩自己,没有问题。
GetLastError = (1428) -没有模块句柄无法设置非本机的挂接。C#钩子
参考这个http://www.csharpwin.com/csharpspace/3766r5747.shtml
这页中的
方法1 试验过了,无效。
方法2 就是我现在用的。
方法3 我也有钩键盘的需求,写了钩键盘,确实没问题。而且我现在算是安装不成功吧?
难道是 CBT类型需要特殊配置?