用PYTHON控制电脑键盘鼠标源码

可以控制键盘鼠标(相对和绝对)多媒体键盘 触摸等等

这个不是调用的系统的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')
dll.netcfg(IP,9000) # IP(可用广播地址) 端口

#串口版

comport=ctypes.create_string_buffer(b'//./com14')#根据自己的串口号修改
serialopen = dll.serialcfg(comport,38400)
if (serialopen == 0):
    print("串口打开失败")


#使用字符串命令接口更简单
#https://note.youdao.com/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命令格式:命令名称:动作,参数 (动作参数前后不要加空格)

类型

命令

动作

功能

参数说明

示例

键盘

key

press

点击键盘按键

按键名称

key:press,a

up

松开按键

按键名称,如不带参数则释放所有按键

key:up,a

down

按下按键。

超过一定时间没发发送up 抬起动作则主机会认为是长按键盘

key:down,a

hid

发送HID键盘码

HID使用HEX十六进制字符串表示

HID全0表示释放所有按键

key:hid,0000020000000000

string

发送字符串

key:string,abcde

鼠标

mouse

leftclick

左键单击

leftdown

左键按下

leftup

左键抬起

rightclick

右键单击

rightdown

右键按下

rightup

右键抬起

wheel

滚轮

参数: 滚动数值

mouse:whell,120

move

相对移动

参数1:横坐标偏移值

参数2:纵坐标偏移值

mouse:move,10,10

absmove

绝对坐标移动

(仅WINDOWS支持。如想安卓也能支持绝对坐标请用触摸功能实现)

参数1:横坐标

参数2:纵坐标

mouse:absmove,100,100

多媒体

consumer (有些键对有些操作系统可能没实现)

androidhome

安卓HOME键

无参数

consumer:androidhome

androidback

安卓返回键

无参数

consumer:androidback

volup

音量加

无参数

consumer:volup

voldown

音量减

无参数。相机状态下一般为拍照键

consumer:voldown

mute

静音

静音/非静音切换

consumer:mute

next

下一首

onsumer:next

pre

上一首

onsumer:pre

play

播放/暂停

播放/暂停切换

consumer:play

stop

停止播放

consumer:stop

value

自定义多媒体键

如果参数用0x开头则为十六进制,否则为十进制

consumer:value,0x00ea

触摸

touch

click

点击屏幕某个点

参数1:横坐标x

参数1:纵坐标y

touch:click,200,300

dbclick

双击屏幕某个点

参数1:横坐标x

参数1:纵坐标y

ouch:dbclick,200,300

longclick

长按屏幕某个点

参数1:横坐标x

参数1:纵坐标y

ouch:longclick,200,300

down

按住屏幕某个点不抬起

单指触摸:

参数1:横坐标x

参数2:纵坐标y

多指触摸:

参数1:

参数1:横坐标x

参数2:纵坐标y

参数3:手指编号(0到n)

touch:down,200,300

touch:down,200,300,1

up

单指触摸:

无参数:松开手指

多指触摸

参数1:松开第几个手指

touch:up

touch:up,1

slide

滑动

参数1:起始点横坐标x1

参数2:起始点纵坐标y1

参数3:终点横坐标x2

参数4:终点纵坐标y2

touch:slide,200,200,800,800

slideleft

左滑

无参数

touch:slideleft

slideright

右滑

无参数

touch:slideright

slideup

上滑

无参数

touch:slideup

slidedown

下滑

无参数

touch:slidedown

set

设置目标设备分辨率。首次使用必须先设置

参数1:宽

参数:高

touch:set,1080,2408

游戏手柄

joy

按键

参数1:按键号

joy:1

参数1:按键

参数2:X轴

参数3:Y轴

参数4:Z轴

joy:0,10,10,0

此命令集必须通过DLL调用转化为底层二进制报文发给硬件

想实现点击某个位置,windows系统支持绝对鼠标,其他系统如安卓必须用触摸才能实现。IOS13.3以上系统网上说已屏蔽了触摸接口。

部分功能特性可能在某些系统不起作用,这些与系统有关,硬件都已实现了这些协议。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值