C#学习教程:在WindowsXP中使用SetWindowsHookEx时出错,但在Windows7程序中不共享。它在Windows7中运行良好,但在WindowsXP中运行不佳。当我在WindowsXP中调用SetWindowsHookEx时,出现错误代码1428intMouseLowLevel=14intcode=SetWindowsHookEx(MouseLowLevel,MouseHookProc,IntPtr.Zero,0);privateIntPtrMouseHookProc(intnCode,IntPtrwParam,IntPtrlParam){}很好奇这段代码在Win7上不会失败,当然我没试过。但这是正确的行为,看起来他们改进了它。SetWindowsHookEx()的参数验证需要有效的非零第三或第四参数。WinError.h中的错误代码具有高度的描述性:////MessageId:ERROR_HOOK_NEEDS_HMOD////MessageText:////Cannotsetnonlocalhookwithoutamodulehandle.//#defineERROR_HOOK_NEEDS_HMOD1428LAnymodulehandlewilldo,因为它实际上并不用于不需要注入到DLL中即可使它们工作的低级挂钩。.NET4需要小心选择一个,因为它的CLR不再为纯托管程序集伪造模块句柄。一个很好用的是你从pinvokingLoadLibrary("user32.dll")中得到的,因为它总是已经加载。您不必调用FreeLibrary()。YouneedthisdeclarationtocallLoadLibrary:以上是C#Tutorial:ErrorusingSetWindowsHookExinWindowsXP,但在Windows7中没有完整的内容分享,如果对大家有用需要详细了解C#Tutorial,希望大家多多关注——[DllImport("kernel32",SetLastError=true,CharSet=CharSet.Auto)]privatestaticexternIntPtrLoadLibrary(stringfileName);会员删除。如需转载请注明出处:
