• Q键连发。按住Q键 则连发。松开则停止2。


    Q键连发。按住Q键 则连发。松开则停止2。 
    用软件模拟可以做到。

    挂低级键盘钩子,判断按键的来源。
    能判断出是真实键盘按键,还是模拟按键,则就可以做了。

    拦截真实按键,放行模拟按键。

    驱动级的就无法判断了。

    指狗为鸡。

    //

    哪个API,能判断出真实按键/模拟按键?

    //

    setwindowshookex,在回调函数里可以判断真实按键还是软件模拟。有些游戏就是靠这方法屏蔽模拟按键的

    指狗为鸡 14:18 

    //

    按键精灵的

    普通模拟,你HOOK哪个函数。

    超级模拟,HOOK哪个函数?

    剑仙十号 15:28 

    //

    低级键盘钩子,wh_keyboard_ll,(13)

    当然这只能判断是不是软件模拟,硬件戓超级是无法判断的

    指狗为鸡 15:52

    2楼. 全局键盘钩子,回调函 数的参数3,是结构体。

    可以先写成整数型。

    我们来看看该结构在MSDN中的解释

    //

    Public Structure KeyboardHookStruct

    Dim vkCode As Integer

    Dim ScanCode As Integer

    Dim Flags As Integer

    Dim Time As Integer

    Dim DwExtraInfo As Integer

    End Structure

    //

    其中各个参数意义如下:

    VkCode:按键的虚拟键码。键盘上的每个按键对应一个虚拟键码

    ScanCode:硬件的扫描码

    Flags:按键消息的详细信息。是一些标识位的组合

    Time:时间。

    DwExtraInfo:扩展到按键消息的信息

    3楼. 结构体的成员3,Flags

    是一个八位的二进制,各个位的标识信息如下:

    从右到左数起。

    0位:扩展键的标识位。

    1表示该键是扩展键;0表示不是。

    1位~3位:保留位,一般为0。

    4位:消息类型的标识位。

    1表示消息是模拟的;0表示消息是真实的。

    5位:Alt键的标识位。

    1表示Alt是按住的;0表示Alt键没有被按下

    6位:保留位,一般是0

    7位:按键的状态标识位。1表示按键是弹起的,0表示按键是按住的

    在易里面,二进制数都做成 十进制数。

    二进制  10000,十进制是16。16就表示按键消息是模拟的。

    if(键盘.Flags==16)

    traceprint("模拟按键。")

    //

    Flags参数的第四位,能区分消息的类别。

    当使用物理键盘,是真实的按键消息,这位是0;

    当用keybd_event函数,模拟按键消息时,这个进制位是1。

    4楼. 调用API函数RtlMoveMemory,,

    把回调函数,参数3的数据,复制到定义好的结构体中。

    .

    复制之前,,参数3的数据是在内存中的。

    //

    在定义RtlMoveMemory这个dll前,先要定义一个结构体1。

    vkCode 整数型

    ScanCode 整数型

    Flags 整数型

    Time 整数型

    DwExtraInfo 整数型

    //

    定义RtlMoveMemory这个dll。

    查询MSDN,参数1是结构体指针。

    参数1的数据类型,定义为上一步的结构体1。勾选传址。

    //

    在程序集窗口,先定义一个局部变量。键盘

    调用API函数RtlMoveMemory,,

    把回调函数,参数3的数据,复制到定义好的结构体中。

    .

    复制之前,,参数3的数据是在内存中的。

    5楼. 之后在回调函数中,判断键盘.Flags 的值就好了。

    键盘.Flags = 0 //真实按键。拦 截。

    键盘.Flags = 16//二进制数是 10000,模拟按键。放行。

    剑仙十号 5-22 16:45 回复 
    6楼. 之后在回调函数中,

    if(键盘.VkCode==81 && 键盘.Flags = 0)

    traceprint("Q键。真实按住。")

    //拦截。

    发送Q键的模拟按键。

    返回(1)

    end
    .
    .
    前台真实按键的API,和前台模拟按键的API是一样的。但可以判断出真实或模拟。

  • 相关阅读:
    BZOJ1085 SCOI2005 骑士精神【IDA* 启发式迭代加深】
    BZOJ1690 Usaco2007 Dec 奶牛的旅行 【01分数规划】
    SPOJ104 Highways 【矩阵树定理】
    BZOJ1597土地购买 【斜率优化DP】
    【模板】NTT
    【模板】FFT
    BZOJ3196 Tyvj1730 二逼平衡树 【树套树】 【线段树套treap】
    POJ3696 The Windy's 【网络流】
    POJ2728 Desert King 【最优比率生成树】
    BZOJ5298 CQOI2018 交错序列 【DP+矩阵快速幂优化】*
  • 原文地址:https://www.cnblogs.com/champion8/p/5555549.html
Copyright © 2020-2023  润新知