Skip to main content

WinIO 的封装库

项目描述

rabird.winio

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

winio 的包装库。

感谢来自 Yariv Kaplan 的优秀 WinIO 库。

WinIO 库二进制分发将从 winiobinary 包访问。

用法

  • 键盘仿真

注意:如果您在 win10 或更高版本上测试,您必须将 ps/2 键盘连接到您的 PC,否则此示例将无法正常工作!

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 需要管理权限才能正常运行。这可以通过以下方式实现:

  • 从作为 LocalSystem 运行的服务中使用 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 库的许可证

变化

0.2.6 (2018-07-20)

  • 声称这个库重命名为 pywinio!

0.2.5 (2018-07-20)

  • 删除了对 python 2.x 的支持

0.2.4 (2018-06-01)

  • 支持appveyor自动部署

0.2.0 (2018-01-21)

  • 依赖于 winiobinary 项目,所以我们不需要在 setup.py 期间下载 WinIo 二进制文件

0.1.9 (2015-12-02)

  • 由于缺少 rabird_bootstrap.py,无法从打包的 zip 文件安装

0.1.8 (2015-09-09)

  • 修复了不适用于 64 位操作系统

0.1.0 (2015-08-18)

  • 修复了不适用于 python3

0.0.9 (2015-08-18)

  • 初始发行

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

rabird.winio-0.2.6.tar.gz (11.3 kB 查看哈希

已上传 source