• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

C#类 勾子 ,想在一个锁屏窗口屏蔽大部分能跳出界面的键盘按键,以下代码能运行,能调用,不报错,就是不起作用

巅峰的路上 能源集团 2020-10-21 11:03:33
C#类 勾子 ,以下代码能运行,能调用,不报错,就是不起作用,求解(送上我的全部积分)
class myHook
{
private IntPtr pKeyboardHook = IntPtr.Zero;//键盘钩子句柄
//钩子委托声明
public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);
private HookProc KeyboardHookProcedure;//键盘钩子委托实例,不能省略变量
public const int idHook = 13;//底层键盘钩子
//安装钩子
[DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)]
public static extern IntPtr SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr pInstance, int threadID);
//卸载钩子
[DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)]
public static extern bool UnhookWindowsHookEx(IntPtr pHookHandle);

//键盘钩子处理函数
private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
{
KeyMSG m = (KeyMSG)Marshal.PtrToStructure(lParam, typeof(KeyMSG));//键盘消息处理
if (pKeyboardHook != IntPtr.Zero)//判断钩子句柄是否为空
{
switch (((Keys)m.vkCode))//判断按键
{
case Keys.LWin://键盘左侧的Win键
case Keys.RWin://键盘右侧的Win键
case Keys.Delete://Delete键
case Keys.Alt://Alt键
case Keys.Escape: //Esc键
case Keys.F4: //F4键
case Keys.Control://Ctrl键
case Keys.Tab://Tab键
return 1;//不执行任何操作
}
}
return 0;
}
//安装钩子方法
public bool InsertHook()
{
IntPtr pIn = (IntPtr)4194304;//将4194304转换为句柄
if (this.pKeyboardHook == IntPtr.Zero)//不存在钩子时
{
//创建钩子
this.KeyboardHookProcedure = new HookProc(KeyboardHookProc);
//使用SetWindowsHookEx函数安装钩子
this.pKeyboardHook = SetWindowsHookEx(idHook, KeyboardHookProcedure, pIn, 0);
if (this.pKeyboardHook == IntPtr.Zero)//如果安装钩子失败
{
this.UnInsertHook();//卸载钩子
return false;
}
}
return true;
}
//卸载钩子方法
public bool UnInsertHook()
{
bool result = true;
if (this.pKeyboardHook != IntPtr.Zero)//如果存在钩子
{
//使用UnhookWindowsHookEx函数卸载钩子
result = (UnhookWindowsHookEx(this.pKeyboardHook) && result);
this.pKeyboardHook = IntPtr.Zero;//清空指针
}
return result;
}
//键盘消息处理结构
[StructLayout(LayoutKind.Sequential)]
public struct KeyMSG
{
public int vkCode;//键盘按键
}
}
}
...全文
12 点赞 收藏 回复
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复

还没有回复,快来抢沙发~

相关推荐
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2020-10-21 11:03
社区公告

让您成为最强悍的C#开发者