同样的代码,在XP下运行和win7下运行,XP下能安装钩子成功,但是win7下就返回失败。
是什么原因? 代码如下:public bool InstallHook()
{ IntPtr pInstance = (IntPtr)4194304;
if (this.m_pKeyboardHook == IntPtr.Zero)
{
this.m_KeyboardHookProcedure = new HookProc(KeyboardHookProc);
this.m_pKeyboardHook = SetWindowsHookEx(idHook, m_KeyboardHookProcedure, pInstance, 0);
if (this.m_pKeyboardHook == IntPtr.Zero)
{
this.UnInstallHook();
return false;
}
} return true;
} private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
{
//return 1;
KeyMSG m = (KeyMSG)Marshal.PtrToStructure(lParam, typeof(KeyMSG));
if (m_pKeyboardHook != IntPtr.Zero)
{
switch (((Keys)m.vkCode))
{
case Keys.LWin:
case Keys.Delete:
case Keys.Alt:
case Keys.F4:
case Keys.Control:
case Keys.Tab:
return 1;
}
}
return 0;
}
是什么原因? 代码如下:public bool InstallHook()
{ IntPtr pInstance = (IntPtr)4194304;
if (this.m_pKeyboardHook == IntPtr.Zero)
{
this.m_KeyboardHookProcedure = new HookProc(KeyboardHookProc);
this.m_pKeyboardHook = SetWindowsHookEx(idHook, m_KeyboardHookProcedure, pInstance, 0);
if (this.m_pKeyboardHook == IntPtr.Zero)
{
this.UnInstallHook();
return false;
}
} return true;
} private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
{
//return 1;
KeyMSG m = (KeyMSG)Marshal.PtrToStructure(lParam, typeof(KeyMSG));
if (m_pKeyboardHook != IntPtr.Zero)
{
switch (((Keys)m.vkCode))
{
case Keys.LWin:
case Keys.Delete:
case Keys.Alt:
case Keys.F4:
case Keys.Control:
case Keys.Tab:
return 1;
}
}
return 0;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货