Python调用驱动级按键--DD虚拟键盘

开发DNF连点功能时,常规的PyMouse PyKeyboard无效

猜测原因是DNF屏蔽了模拟信号

尝试使用驱动级按键

作者:石头三颗
链接:https://www.zhihu.com/question/42888871/answer/385506293
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

比如DD虚拟键盘虚拟鼠标

这个官方例子里就有python下如何调用的例子:

from ctypes import *

import time

# 注册DD DLL,64位python用64位,32位用32位,具体看DD说明文件。
# 测试用免安装版。
# 用哪个就调用哪个的dll文件。
dd_dll = windll.LoadLibrary('ddx64.dll')

# DD虚拟码,可以用DD内置函数转换。
vk = {'5': 205, 'c': 503, 'n': 506, 'z': 501, '3': 203, '1': 201, 'd': 403, '0': 210, 'l': 409, '8': 208, 'w': 302,
        'u': 307, '4': 204, 'e': 303, '[': 311, 'f': 404, 'y': 306, 'x': 502, 'g': 405, 'v': 504, 'r': 304, 'i': 308,
        'a': 401, 'm': 507, 'h': 406, '.': 509, ',': 508, ']': 312, '/': 510, '6': 206, '2': 202, 'b': 505, 'k': 408,
        '7': 207, 'q': 301, "'": 411, '\\': 313, 'j': 407, '`': 200, '9': 209, 'p': 310, 'o': 309, 't': 305, '-': 211,
        '=': 212, 's': 402, ';': 410}
# 需要组合shift的按键。
vk2 = {'"': "'", '#': '3', ')': '0', '^': '6', '?': '/', '>': '.', '<': ',', '+': '=', '*': '8', '&': '7', '{': '[', '_': '-',
        '|': '\\', '~': '`', ':': ';', '$': '4', '}': ']', '%': '5', '@': '2', '!': '1', '(': '9'}

def down_up(code):
    # 进行一组按键。

    dd_dll.DD_key(vk[code], 1)
    dd_dll.DD_key(vk[code], 2)

def dd(key):
    # 500是shift键码。
    if i.isupper():
        # 如果是一个大写的玩意。

        # 按下抬起。
        dd_dll.DD_key(500, 1)
        down_up(i.lower())
        dd_dll.DD_key(500, 2)

    elif i in '~!@#$%^&*()_+{}|:"<>?':
        # 如果是需要这样按键的玩意。
        dd_dll.DD_key(500, 1)
        down_up(vk2[i])
        dd_dll.DD_key(500, 2)
    else:
        down_up(i)

input("按任意键继续...")
# 之后等待两秒。
time.sleep(2)

# 测试按键。
for i in 'http://www.ddxoft.com':
    dd(i)

# 需要注意的问题。
# 若同时开启两个脚本,第二个脚本会调用失败。驱动会加载错误。
# 这个错误可以被Python捕获。

# 网络错误会成功启动脚本,但是按键不会有效果,需要重新启动脚本。
# 这个错误无法被Python捕获。
# 这个错误可以用dd_dll的内置函数测试是否加载成功来确定。

代码晚上回家进行一波测试 

DD64文件需更新 须加群 不测了 。

  • 3
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
使用python-opencv调用mjpg-stream视频流可以通过以下几个步骤实现: 1. 首先,我们需要安装python-opencv库。可以使用pip命令进行安装,如下所示: ``` pip install opencv-python ``` 2. 导入所需的库。我们需要导入opencv模块,以及用于从URL中读取视频流的模块urllib.request。代码如下: ```python import cv2 import urllib.request ``` 3. 定义视频流的URL。根据实际情况,将URL替换为相应的mjpg-stream视频流的URL。代码如下: ```python stream_url = "http://example.com/stream/video.mjpg" ``` 4. 使用urllib.request.urlopen()方法打开视频流URL,并读取其中的数据。代码如下: ```python stream = urllib.request.urlopen(stream_url) ``` 5. 使用cv2.VideoCapture()方法创建一个视频捕获对象,然后使用read()方法从视频流中读取每一帧图像数据。代码如下: ```python capture = cv2.VideoCapture(stream) ret, frame = capture.read() ``` 6. 在一个循环中,不断读取视频流中的每一帧图像数据,然后进行后续的处理。例如,可以显示图像、保存图像等。代码如下: ```python while True: ret, frame = capture.read() cv2.imshow("Video Stream", frame) # 处理图像数据的其他操作 if cv2.waitKey(1) == ord('q'): break capture.release() cv2.destroyAllWindows() ``` 在以上步骤中,我们首先安装了python-opencv库,然后导入所需的库,之后定义了视频流的URL。接着,通过urllib.request库打开视频流URL,并创建了一个视频捕获对象。最后,利用一个循环读取每一帧图像数据,并进行相应的处理,例如显示图像或保存图像。最后,释放资源并关闭窗口。 以上就是使用python-opencv调用mjpg-stream视频流的基本过程。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值