键盘 计算机代码,键盘钩子示例[通俗易懂]

键盘 计算机代码,键盘钩子示例[通俗易懂]#region自定义事件//////Hooksthestart.///publicvoidHook_Start(){//安装键盘钩子if(hHook==0){KeyBoardHookProcedure=newHookProc(KeyBoardHookProc);hHook=SetWindowsHookEx(WH_KEYBOARD_LL,KeyBoardHookPr…

大家好,又见面了,我是你们的朋友全栈君。

#region 自定义事件

///

/// Hooks the start.

///

public void Hook_Start()

{

// 安装键盘钩子

if (hHook == 0)

{

KeyBoardHookProcedure = new HookProc(KeyBoardHookProc);

hHook = SetWindowsHookEx(WH_KEYBOARD_LL,

KeyBoardHookProcedure,

GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0);

//如果设置钩子失败.

if (hHook == 0)

{

Hook_Clear();

}

}

}

//取消钩子事件

///

/// Hooks the clear.

///

/// UnhookWindowsHookEx failed.

public void Hook_Clear()

{

bool retKeyboard = true;

if (hHook != 0)

{

retKeyboard = UnhookWindowsHookEx(hHook);

hHook = 0;

}

//如果去掉钩子失败.

if (!retKeyboard) throw new Exception(“UnhookWindowsHookEx failed.”);

}

//这里可以添加自己想要的信息处理

///

/// Keys the board hook proc.

///

/// The n code.

/// The w parameter.

/// The l parameter.

/// System.Int32.

public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam)

{

return 1;

}

#endregion 自定义事件

#region 暂时屏幕按键

//委托

public delegate int HookProc(int nCode, int wParam, IntPtr lParam);

///

/// The h hook

///

private static int hHook = 0;

///

/// The wh keyboard ll

///

public const int WH_KEYBOARD_LL = 13;

//LowLevel键盘截获,如果是WH_KEYBOARD=2,并不能对系统键盘截取,Acrobat Reader会在你截取之前获得键盘。

///

/// The key board hook procedure

///

private HookProc KeyBoardHookProcedure;

///

/// Class KeyBoardHookStruct.

///

/// 键盘Hook结构函数

[StructLayout(LayoutKind.Sequential)]

public class KeyBoardHookStruct

{

///

/// The vk code

///

public int vkCode;

///

/// The scan code

///

public int scanCode;

///

/// The flags

///

public int flags;

///

/// The time

///

public int time;

///

/// The dw extra information

///

public int dwExtraInfo;

}

#region DllImport

//设置钩子

///

/// Sets the windows hook ex.

///

/// The identifier hook.

/// The LPFN.

/// The h instance.

/// The thread identifier.

/// System.Int32.

[DllImport(“user32.dll”)]

public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);

///

/// Unhooks the windows hook ex.

///

/// The identifier hook.

/// true if XXXX, false otherwise.

[DllImport(“user32.dll”, CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]

//抽掉钩子

public static extern bool UnhookWindowsHookEx(int idHook);

///

/// Calls the next hook ex.

///

/// The identifier hook.

/// The n code.

/// The w parameter.

/// The l parameter.

/// System.Int32.

[DllImport(“user32.dll”)]

//调用下一个钩子

public static extern int CallNextHookEx(int idHook, int nCode, int wParam, IntPtr lParam);

///

/// Gets the current thread identifier.

///

/// System.Int32.

[DllImport(“kernel32.dll”)]

public static extern int GetCurrentThreadId();

///

/// Gets the module handle.

///

/// The name.

/// IntPtr.

[DllImport(“kernel32.dll”)]

public static extern IntPtr GetModuleHandle(string name);

#endregion DllImport

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138955.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm 查看函数帮助_WINCC记录字符串变量

    pycharm 查看函数帮助_WINCC记录字符串变量【为了方便自己以后查阅,记录下使用PyCharm时的一些小技巧】正在学习Python,在调试Python程序时,遇到了一个非常大的问题:如何能够方便地查看变量的取值呢?由于使用matlab多年,深深地习惯了Matlab方便地参考变量取值的功能,所以,对于正在学习的python没办法实时查看变量取值感到很是郁闷没想到,原来PyCharm具有这个功能,只不过之前没有发现而已对于将要调试

    2022年8月27日
  • linux tar压缩排除某个文件夹

    linux tar压缩排除某个文件夹一般直接用tar命令打包很简单,直接使用tar-zcvftest.tar.gztest即可。在很多时候,我们要对某一个目录打包,而这个目录下有几十个子目录和子文件,我们需要在打包的时候排除其中1、2个目录。这时候我们在用tar命令打包的时候,增加参数–exclude就能达到目的。例如:我们以tomcat为例,打包的时候我们要排除tomcat/logs目

    2022年5月9日
  • 源码网_最好开源即时聊天源码

    源码网_最好开源即时聊天源码源码结构目录可以看到此模块定义了4个属性和12个函数,我们依次来讲解属性源码分析#匹配http://或https://absolute_http_url_regexp=re.compil

    2022年7月30日
  • vue-cli脚手架的.babelrc文件 详解

    vue-cli脚手架的.babelrc文件 详解

    2021年10月11日
  • 软件免杀教程_EXE文件

    软件免杀教程_EXE文件攻击机:win7IP:192.168.32.134靶机:windowsserver2012(安装360、火绒)IP:192.168.32.133第一步:使用njRAT生产一个客户端exe木马输入回连端口号8888,点击start配置客户端木马的回连地址:192.168.32.134将文件保存在桌面开启360杀毒,直接报毒,不免杀1、将生成的客户端木马:Server.exe在EncryptionToolV3.0中以base64加密方式打开打开之后,将base6

    2022年8月20日
  • 微信小程序开发工具基本介绍入门级(备忘)

    微信小程序开发工具基本介绍入门级(备忘)微信小程序的一些入门介绍。

    2022年8月21日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号