public bool InstallHook(string flagsinfo)
{
this.flags = flagsinfo;
//获取当前可执行文件的句柄
IntPtr pInstance = Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().ManifestModule); 单个项目用这个
//pInstance = (IntPtr)4194304;
/ /注意:很多时候得到的pInstanc无法安装钩子,请检查值是否为4194304,在应用程序中可以直接取得pinstance的
IntPtr pInstance = ImportHook.GetModuleHandle(System.Diagnostics.Process.GetCurrentProcess().MainModule.ModuleName); //多个项目用这个// 假如没有安装鼠标钩子
if ( this.m_pMouseHook == IntPtr.Zero )
{
this.m_MouseHookProcedure = new ImportHook.HookProc(this.MouseHookProc);
this.m_pMouseHook = ImportHook.SetWindowsHookEx(ImportHook.WH_Codes.WH_MOUSE_LL, this.m_MouseHookProcedure, pInstance, 0);
if ( this.m_pMouseHook == IntPtr.Zero )
{
this.UnInstallHook();
return false;
}
}
if ( this.m_pKeyboardHook == IntPtr.Zero )
{
this.m_KeyboardHookProcedure = new ImportHook.HookProc(this.KeyboardHookProc);
this.m_pKeyboardHook = ImportHook.SetWindowsHookEx(ImportHook.WH_Codes.WH_KEYBOARD_LL, this.m_KeyboardHookProcedure, pInstance, 0);
if ( this.m_pKeyboardHook == IntPtr.Zero )
{
this.UnInstallHook();
return false;
}
}
return true;
}