winio的包装库

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库的许可证

更改

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)

  • 初始版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Intellij通过方法中的包查找用法   java中VS代码和打包命名的问题   将java CMS功能集成到具有高度动态内容的网站(Lucene/Mysql/Nosql)的策略   oracle的java类强制转换异常。jdbc。驾驶员OracleConnection   字节码向JVM添加上指令   如何在抽象类中执行java方法?   java是否可以在apache访问日志中排除指定的GET参数?(作者:W7开发环境)   java如何获取已安装音频播放器的列表?   尝试向HS学生展示如何使用Java访问MS数据库   使用正则表达式java对给定行中的特定字符串进行计数   java JOOQ Select查询中的Select计数   方法Java,如何从二维双精度数组中找到特定值?   获取图像URL的java正则表达式   java在切换到新的窗口驱动程序后找不到元素