基于kmclass的驱动级键鼠调用,适用于制作python游戏脚本

         笔者接过一单关于驱动级键鼠调用的单子,为类似梦幻西游的网页游戏自动发言的脚本制作

先后使用了pyautogui,pyperclip,pywin32,keyboard,pykeyboard等库,然而无一能实现我的

目的,经过再三搜索,笔者偶然间发现了python有关于kmclass的调用

以下附上调用方法:

# -*- coding: utf-8 -*-
from ctypes import CDLL

#请使用你放置kmclassdll.dll和kmclass.sys的绝对路径

dll_path = 'C:\\Desktop\\lo\\kmclassdll-x64\\kmclassdll.dll'
driver_path = b'C:\\Desktop\\lo\kmclass-x64\\kmclass\\kmclass.sys'


driver = None
VK_CODE = {
    'backspace': 0x08,
    'tab': 0x09,
    'clear': 0x0C,
    'enter': 0x0D,
    'shift': 0x10,
    'ctrl': 0x11,
    'alt': 0x12,
    'pause': 0x13,
    'caps_lock': 0x14,
    'esc': 0x1B,
    'spacebar': 0x20,
    'page_up': 0x21,
    'page_down': 0x22,
    'end': 0x23,
    'home': 0x24,
    'left_arrow': 0x25,
    'up_arrow': 0x26,
    'right_arrow': 0x27,
    'down_arrow': 0x28,
    'select': 0x29,
    'print': 0x2A,
    'execute': 0x2B,
    'print_screen': 0x2C,
    'ins': 0x2D,
    'del': 0x2E,
    'help': 0x2F,
    '0': 0x30,
    '1': 0x31,
    '2': 0x32,
    '3': 0x33,
    '4': 0x34,
    '5': 0x35,
    '6': 0x36,
    '7': 0x37,
    '8': 0x38,
    '9': 0x39,
    'a': 0x41,
    'b': 0x42,
    'c': 0x43,
    'd': 0x44,
    'e': 0x45,
    'f': 0x46,
    'g': 0x47,
    'h': 0x48,
    'i': 0x49,
    'j': 0x4A,
    'k': 0x4B,
    'l': 0x4C,
    'm': 0x4D,
    'n': 0x4E,
    'o': 0x4F,
    'p': 0x50,
    'q': 0x51,
    'r': 0x52,
    's': 0x53,
    't': 0x54,
    'u': 0x55,
    'v': 0x56,
    'w': 0x57,
    'x': 0x58,
    'y': 0x59,
    'z': 0x5A,
    'numpad_0': 0x60,
    'numpad_1': 0x61,
    'numpad_2': 0x62,
    'numpad_3': 0x63,
    'numpad_4': 0x64,
    'numpad_5': 0x65,
    'numpad_6': 0x66,
    'numpad_7': 0x67,
    'numpad_8': 0x68,
    'numpad_9': 0x69,
    'multiply_key': 0x6A,
    'add_key': 0x6B,
    'separator_key': 0x6C,
    'subtract_key': 0x6D,
    'decimal_key': 0x6E,
    'divide_key': 0x6F,
    'F1': 0x70,
    'F2': 0x71,
    'F3': 0x72,
    'F4': 0x73,
    'F5': 0x74,
    'F6': 0x75,
    'F7': 0x76,
    'F8': 0x77,
    'F9': 0x78,
    'F10': 0x79,
    'F11': 0x7A,
    'F12': 0x7B,
    'F13': 0x7C,
    'F14': 0x7D,
    'F15': 0x7E,
    'F16': 0x7F,
    'F17': 0x80,
    'F18': 0x81,
    'F19': 0x82,
    'F20': 0x83,
    'F21': 0x84,
    'F22': 0x85,
    'F23': 0x86,
    'F24': 0x87,
    'num_lock': 0x90,
    'scroll_lock': 0x91,
    'left_shift': 0xA0,
    'right_shift ': 0xA1,
    'left_control': 0xA2,
    'right_control': 0xA3,
    'left_menu': 0xA4,
    'right_menu': 0xA5,
    'browser_back': 0xA6,
    'browser_forward': 0xA7,
    'browser_refresh': 0xA8,
    'browser_stop': 0xA9,
    'browser_search': 0xAA,
    'browser_favorites': 0xAB,
    'browser_start_and_home': 0xAC,
    'volume_mute': 0xAD,
    'volume_Down': 0xAE,
    'volume_up': 0xAF,
    'next_track': 0xB0,
    'previous_track': 0xB1,
    'stop_media': 0xB2,
    'play/pause_media': 0xB3,
    'start_mail': 0xB4,
    'select_media': 0xB5,
    'start_application_1': 0xB6,
    'start_application_2': 0xB7,
    'attn_key': 0xF6,
    'crsel_key': 0xF7,
    'exsel_key': 0xF8,
    'play_key': 0xFA,
    'zoom_key': 0xFB,
    'clear_key': 0xFE,
    '+': 0xBB,
    ',': 0xBC,
    '-': 0xBD,
    '.': 0xBE,
    '/': 0xBF,
    '`': 0xC0,
    ';': 0xBA,
    '[': 0xDB,
    '\\': 0xDC,
    ']': 0xDD,
    "'": 0xDE,
    '`': 0xC0
}


def _key_up(key):
    global driver
    driver.KeyDown(VK_CODE[key])

def _key_down(key):
    global driver
    driver.KeyUp(VK_CODE[key])

def _left_button_down():
    global driver
    driver.MouseLeftButtonDown()

def _left_button_up():
    global driver
    driver.MouseLeftButtonUp()

def _right_button_down():
    global driver
    driver.MouseRightButtonDown()

def _right_button_up():
    global driver
    driver.MouseRightButtonUp()

def _middle_button_down():
    global driver
    driver.MouseMiddleButtonDown()

def _middle_button_up():
    global driver
    driver.MouseMiddleButtonUp()

def _move_rel(x, y):
    global driver
    driver.MouseMoveRELATIVE(x,y)

def _move_to(x, y):
    global driver
    driver.MouseMoveABSOLUTE(x,y)

def load_driver():
    global driver
    driver = CDLL(dll_path)
    driver.LoadNTDriver('kmclass',driver_path)
    driver.SetHandle()

def unload_driver():
    global driver
    driver.UnloadNTDriver('kmclass')


#-----------------以上可创建为kmclass库--------------------------

def press(words):
    for word in words:
        if word==" ":
            _key_down('spacebar')
            time.sleep(0.3)
            _key_up('spacebar')
        else:
            _key_down(f'{word}')
            time.sleep(0.3)
            _key_up(f'{word}')

def main():
    load_driver()#加载kmclass

    a=input('请输入字符(限键盘按键)')

    time.sleep(5)

    press(a)

    unload_driver()#释放kmclass

if __name__ == '__main__':
    main()

请使用管理员身份在cmd下调用程序

bcdedit /set nointegritychecks on开启 测试模式
bcdedit /set testsigning on禁用强制驱动签名模式
shutdown  -r -t 0 重启

重启后管理员身份运行
python km.py

kmclassdll.dll及kmclass.sys文件可于GitHub自行搜索和下载

当然,如果你愿意的话,也可以在我的资源处购买

 

  • 3
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 30
    评论
KMClass是Windows驱动程序开发的一个类库,用于操作和管理键盘和标的输入。驱动级键调用是指在驱动程序中通过使用KMClass来实现对键盘和标输入的控制和操作。 在开发中,可以使用KMClass提供的函数和方法来注册、响应和处理键盘和标的输入事件。首先,需要在驱动程序的初始化阶段调用KMClass的初始化函数,以便初始化键盘和标的接口和状态。 在驱动程序中,可以使用KMClass提供的函数来注册键盘和标的事件处理函数,以便在接收到键盘和标的输入时进行相应的操作。例如,可以注册一个键盘事件处理函数来响应按键事件,或者注册一个标事件处理函数来响应标移动或点击事件。 在事件处理函数中,可以使用KMClass提供的函数来获取和处理键盘和标的输入数据。例如,可以使用KMClass的GetKeyboardState函数来获取键盘的状态,或者使用GetMousePosition函数来获取标的位置。 除了输入事件的处理外,KMClass还提供了一些其他的功能,比如模拟键盘和标的输入,设置键盘和标的状态等。这些功能可以通过调用KMClass提供的相关函数来实现。 总结起来,基于KMClass驱动级键调用是通过在驱动程序中使用KMClass的函数和方法来实现对键盘和标输入的控制和操作。通过注册事件处理函数,并使用KMClass提供的相关功能函数,可以获取、处理和模拟键盘和标的输入,实现对键操作的灵活控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你这猴儿,因何赖在这不走

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值