winio的包装库

pywinio的Python项目详细描述


Pywinio

https://img.shields.io/pypi/v/pywinio.svghttps://ci.appveyor.com/api/projects/status/github/starofrainnight/pywinio?svg=true

winio的包装库

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

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

注意:此库已在0.3.0之后从“rabird.winio”重命名为“pywinio”。

  • 许可证:apache-2.0

使用量

  • 键盘模拟
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 pywinio
import time
import atexit

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

g_winio = None

def get_winio():
    global g_winio

    if g_winio is None:
            g_winio = pywinio.WinIO()
            def __clear_winio():
                    global g_winio
                    g_winio = None
            atexit.register(__clear_winio)

    return g_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

许可证

这个库是在apache-2.0下获得许可的,它已经在许可证中描述过了

license-winio中描述的winio库的许可证

历史记录

0.3.0(2018-07-24)

  • 重命名为pywinio

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在ArrayList中比较数字   java在Kotlin中使异步调用同步   让“Scala编程”junit示例在IntelliJ中工作的java问题   java Servlet侦听器未在ContextListener中设置属性   将Microsoft SQL Server数据库连接到我的Java项目   加载资源时出现java“需要注册工厂”异常   java如何使用POI检查excel中的重复记录?   java如何更改机器生成的代码   java如何确保重写的方法是同步的   用Spring编写Hibernate时的java XML奥秘   java管理mysql数据库中存储的用户权限   java如何运行。来自Javascript的jar方法   java我想在Web应用程序中进行身份验证&对桌面应用程序使用相同的凭据。我该怎么做?