可以控制键盘鼠标(相对和绝对)多媒体键盘触摸等等
这个不是调用的系统的key_event send_input等软件API模拟的,软件模拟会被检测基本淘汰了。
这里使用的是物理芯片硬件方案,有单头(HID007) 双头 WIFI版本,可以更好的防检测。
python通过调用DLL的接口实现各种操作,操作命令表见文章末尾。
欢迎技术讨论:Q445672671
import ctypes
from ctypes import *
import time
import platform
print(platform.architecture())
dll = cdll.LoadLibrary('hiddll.dll')
#print("dll调用测试")
#dll.test( )
time.sleep( 1 )
#USB版本硬件
usbopen=dll.open_hiddev_default()
if (usbopen < 0):
print("USB硬件未连接")
cmd=ctypes.create_string_buffer(b'consumer:mute')#多媒体静音
dll.hid007_cmd(cmd)
time.sleep(2)
x=100
y=100
cmdstr = 'mouse:absmove,%d,%d' % (x,y) #移动到WINDOWS指定坐标
print(cmdstr)
cmd=ctypes.create_string_buffer(cmdstr.encode('UTF-8'))
dll.hid007_cmd(cmd)
time.sleep( 1 )
'''
s=('中国ABC')
s=s.encode('gbk')
sbuf=create_string_buffer(s, len(s))
dll.key_unicodestring(sbuf)
abc1234
#网络版硬件WIFIHID要和运行本脚本的电脑在同一局域网 USB版硬件要注释掉这两行
IP=ctypes.create_string_buffer(b'192.168.64.255')
cfg(IP,9000) # IP(可用广播地址) 端口
#串口版
comport=ctypes.create_string_buffer(b'//./com14')#根据自己的串口号修改
serialopen = dll.serialcfg(comport,38400)
if (serialopen == 0):
print("串口打开失败")
#使用字符串命令接口更简单
#/s/Gyrcngxs
cmd=ctypes.create_string_buffer(b'key:press,a') #键盘按键A
#dll.hid007_cmd(cmd)
cmd=ctypes.create_string_buffer(b'key:string,ABc1234') #键盘按键A
dll.hid007_cmd(cmd)
#dll.absmove(50,50)
cmd=ctypes.create_string_buffer(b'mouse:absmove,100,100') #鼠标右键
dll.hid007_cmd(cmd)
time.sleep( 1 )
# '''
"""
#直接调用函数
print("多媒体测试")
dll.vol_down(); #音量减
time.sleep( 1 )
print("鼠标移动测试")
dll.absmove(50,50)
time.sleep( 1 )
print("键盘测试")
keyname=ctypes.create_string_buffer(b'a')
dll.key(keyname,0,1)
time.sleep( 1 )
keyname=ctypes.create_string_buffer(b'b')
dll.key(keyname,0,1)
time.sleep( 1 )
keyname=ctypes.create_string_buffer(b'enter')
dll.key(keyname,0,1)
"""
#USB版本硬件
if(usbopen):
dll.close_hiddev()
HID命令格式:命令名称:动作,参数 (动作参数前后不要加空格)
此命令集必须通过DLL调用转化为底层二进制报文发给硬件
想实现点击某个位置,windows系统支持绝对鼠标,其他系统如安卓必须用触摸才能实现。IOS13.3以上系统网上说已屏蔽了触摸接口。
部分功能特性可能在某些系统不起作用,这些与系统有关,硬件都已实现了这些协议。