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

键盘 计算机代码,键盘钩子示例[通俗易懂]#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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 了解mssql数据库

    0x00前言介于这段时间比较忙,所以博客的更新也比较慢。本来想前几天就发这个mssql数据库的,但是因为mssql的结构比较复杂,利用方式也比较多,所以又去深入研究了一下mssql的数据库结构和各

    2021年12月11日
    75
  • Android Studio 教程:入门开发第一个程序「建议收藏」

    Android Studio 教程:入门开发第一个程序「建议收藏」AndroidStudio教程:入门开发第一个程序2018.09.1114:3016005浏览开发第一应用可以开发属于自己的应用,是否有点小激动?好吧!让我们开始,首先点击StartanewAndroidStudioProject创建工程:接下来需要输入应用名称(第一个字母要大写)、公司域以及指定应用存放目录,点击Next按钮进入下一步:如果第一个字母…

    2022年6月1日
    38
  • Linux下安装Tomcat 10

    Linux下安装Tomcat 10(Linux)Deepin下安装Tomcat101)在官网下载tar.gz包2)解压到目录(这里‘用户名’换成你自己的)sudotar-zxvf/home/用户名/Downloads/apache-tomcat-10.0.0.tar.gz-C/usr/local3)重命名sudomv/usr/local/apache-tomcat-10.0.0/usr/local/Tomcat4)测试sudo/usr/local/Tomcat/bin/startup.sh若失败则

    2022年6月2日
    44
  • log4j pattern详解_标题的含义和作用ppt

    log4j pattern详解_标题的含义和作用pptConversionPattern参数的格式含义格式名含义%c输出日志信息所属的类的全名%d输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-ddHH:mm:ss},输出类似:2002-10-18-22:10:28%f输出日志信息所属的类的类名%l输出日志事件的发生位置,即输出日志信息的语句处于它所在…

    2022年8月22日
    5
  • Vb.net/VB 声明API功能父窗口功能[亲测有效]

    Vb.net/VB 声明API功能父窗口功能

    2021年12月17日
    41
  • python astype str_Python astype(np.float)函数使用方法解析

    python astype str_Python astype(np.float)函数使用方法解析我的数据库如图结构我取了其中的nameagenr,做成array,只要所取数据存在str型,那么取出的数据,全部转化为str型,也就是array阵列的元素全是str,不管数据库定义的是不是int型。那么问题来了,取出的数据代入公式进行计算的时候,就会类型不符,这是就用到astype(np.float)代码如下importpymysqlimportnumpyasnpconn=pymy…

    2022年6月3日
    112

发表回复

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

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