python的rabird.winio模拟按键鼠标(一)

这篇博客介绍了Python的rabird.winio库,它是WinIO的包装库,用于键盘模拟。用户需要注意,该库需要管理权限才能运行,并提供了获取权限的方法。文中给出了键盘按键操作的示例代码,并提到了在64位系统上驱动程序签名的要求。此外,还提及了该项目已重命名为pywinio,建议用户更新使用。
摘要由CSDN通过智能技术生成

rabird.winio的Python项目详细描述

 

拉伯德.winio

警告:此库已重命名为pywinio,请改用它!

winio的包装库。

感谢来自亚里夫卡普兰的伟大的Winio图书馆。

将从winio binary包访问winio库二进制分发。

用法

  • 键盘模拟
NOTICE: You must have a ps/2 keyboard connected to your PC if you test on win10 or later, otherwise this sample won’t works!
import rabird.winio
import time
import atexit

# KeyBoard Commands
# Command port
KBC_KEY_CMD = 0x64
# Data port
KBC_KEY_DATA = 0x60

__winio = None

def __get_winio():
    global __winio

    if __winio is None:
            __winio = rabird.winio.WinIO()
            def __clear_winio():
                    global __winio
                    __winio = None
            atexit.register(__clear_winio)

    return __winio

def wait_for_buffer_empty():
    '''
    Wait keyboard buffer empty
    '''

    winio = __get_winio()

    dwRegVal = 0x02
    while (dwRegVal & 0x02):
            dwRegVal = winio.get_port_byte(KBC_KEY_CMD)

def key_down(scancode):
    winio = __get_winio()

    wait_for_buffer_empty();
    winio.set_port_byte(KBC_KEY_CMD, 0xd2);
    wait_for_buffer_empty();
    winio.set_port_byte(KBC_KEY_DATA, scancode)

def key_up(scancode):
    winio = __get_winio()

    wait_for_buffer_empty();
    winio.set_port_byte( KBC_KEY_CMD, 0xd2);
    wait_for_buffer_empty();
    winio.set_port_byte( KBC_KEY_DATA, scancode | 0x80);

def key_press(scancode, press_time = 0.2):
    key_down( scancode )
    time.sleep( press_time )
    key_up( scancode )


# Press 'A' key
# Scancodes references : https://www.win.tue.nl/~aeb/linux/kbd/scancodes-1.html
key_press(0x1E)

特权要求

winio需要管理权限才能正常运行。这可以通过以下方法实现:

  • 从作为本地系统运行的服务中使用winio(必须显式启用se_load_driver_name权限)。
  • 在请求权限提升的应用程序中嵌入清单文件。
  • 要求用户在启动应用程序时选择“以管理员身份运行”选项。

包含的C示例演示如何使用嵌入的清单文件来请求权限提升。

64位系统上的驱动程序签名要求

64位版本的Windows只加载由公共CA(如VeriSign、Thawte等)颁发的代码签名证书签名的设备驱动程序。除非获得并使用代码签名证书对此文件进行签名,否则不能在生产计算机上部署winio64.sys。winio64.sys的捆绑副本使用自签名证书进行签名,并且只能在Windows以特殊“测试”模式运行的开发/测试计算机上使用。要使用捆绑版本的winio64.sys,需要执行以下步骤:

  • 右键单击图标并单击“以管理员身份运行”,打开提升的命令窗口。
  • 键入以下命令以启用测试签名:
bcdedit.exe /set TESTSIGNING ON
  • 重新启动计算机

有关Windows驱动程序签名要求的详细信息,请参阅http://www.microsoft.com/whdc/winlogo/drvsign/kmcs_walkthrough.mspx

许可证

这个库使用了license.txt中已经描述过的mit许可证

license-winio.txt中描述了WinIO库的许可证

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lipaisan

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

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

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

打赏作者

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

抵扣说明:

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

余额充值