Add Ghostbox hardware and logistics automation
This commit is contained in:
BIN
Ghostbox_ddl/gbild64.dll
Normal file
BIN
Ghostbox_ddl/gbild64.dll
Normal file
Binary file not shown.
260
Ghostbox_ddl/ghostbox.py
Normal file
260
Ghostbox_ddl/ghostbox.py
Normal file
@@ -0,0 +1,260 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import platform
|
||||
from ctypes import *
|
||||
import os
|
||||
|
||||
|
||||
# 加载DLL
|
||||
script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
if platform.architecture()[0] == "64bit":
|
||||
dll_path = os.path.join(script_dir, "gbild64.dll")
|
||||
else:
|
||||
dll_path = os.path.join(script_dir, "gbild32.dll")
|
||||
dll = windll.LoadLibrary(dll_path)
|
||||
|
||||
|
||||
# 设置接口返回值类型
|
||||
dll.getmodel.restype = c_char_p
|
||||
dll.getserialnumber.restype = c_char_p
|
||||
dll.getproductiondate.restype = c_char_p
|
||||
dll.getfirmwareversion.restype = c_char_p
|
||||
dll.getclientscreenresolution.restype = c_char_p
|
||||
dll.readstring.restype = c_char_p
|
||||
dll.encryptstring.restype = c_char_p
|
||||
dll.decryptstring.restype = c_char_p
|
||||
dll.getproductname.restype = c_char_p
|
||||
dll.sdktype.restype = c_char_p
|
||||
dll.sdkversion.restype = c_char_p
|
||||
|
||||
|
||||
|
||||
# ================ 设备操作
|
||||
# 打开设备(根据设备序号)
|
||||
def opendevice(index=0):
|
||||
return dll.opendevice(index)
|
||||
# 打开设备(根据设备ID)
|
||||
def opendevicebyid(vid,pid):
|
||||
return dll.opendevicebyid(vid,pid)
|
||||
# 打开设备(根据设备路径)
|
||||
def opendevicebypath(path):
|
||||
return dll.opendevicebypath(bytes(path,"utf-8"))
|
||||
# 检查设备是否连接
|
||||
def isconnected():
|
||||
return dll.isconnected()
|
||||
# 关闭设备
|
||||
def closedevice():
|
||||
return dll.closedevice()
|
||||
# 复位设备
|
||||
def resetdevice():
|
||||
return dll.resetdevice()
|
||||
|
||||
|
||||
# ================ 设备信息
|
||||
# 获取设备型号
|
||||
def getmodel():
|
||||
return dll.getmodel().decode("utf-8")
|
||||
# 获取设备序列号
|
||||
def getserialnumber():
|
||||
return dll.getserialnumber().decode("utf-8")
|
||||
# 获取设备生产日期
|
||||
def getproductiondate():
|
||||
return dll.getproductiondate().decode("utf-8")
|
||||
# 获取设备固件版本号
|
||||
def getfirmwareversion():
|
||||
return dll.getfirmwareversion().decode("utf-8")
|
||||
|
||||
|
||||
# ================ 键盘操作
|
||||
# 按下键
|
||||
def presskeybyname(keyn):
|
||||
return dll.presskeybyname(bytes(keyn,"utf-8"))
|
||||
def presskeybyvalue(keyv):
|
||||
return dll.presskeybyvalue(keyv)
|
||||
# 释放键
|
||||
def releasekeybyname(keyn):
|
||||
return dll.releasekeybyname(bytes(keyn,"utf-8"))
|
||||
def releasekeybyvalue(keyv):
|
||||
return dll.releasekeybyvalue(keyv)
|
||||
# 按下并释放键
|
||||
def pressandreleasekeybyname(keyn):
|
||||
return dll.pressandreleasekeybyname(bytes(keyn,"utf-8"))
|
||||
def pressandreleasekeybyvalue(keyv):
|
||||
return dll.pressandreleasekeybyvalue(keyv)
|
||||
# 判断键盘按键状态
|
||||
def iskeypressedbyname(keyn):
|
||||
return dll.iskeypressedbyname(bytes(keyn,"utf-8"))
|
||||
def iskeypressedbyvalue(keyv):
|
||||
return dll.iskeypressedbyvalue(keyv)
|
||||
# 释放所有键盘按键
|
||||
def releaseallkey():
|
||||
return dll.releaseallkey()
|
||||
# 组合按键
|
||||
def combinationkey(keys):
|
||||
return dll.combinationkey(bytes(keys,"utf-8"))
|
||||
# 输入字符串
|
||||
def inputstring(str):
|
||||
return dll.inputstring(bytes(str,"utf-8"))
|
||||
# 获取大写锁定状态
|
||||
def getcapslock():
|
||||
return dll.getcapslock()
|
||||
# 获取数字键盘锁定状态
|
||||
def getnumlock():
|
||||
return dll.getnumlock()
|
||||
# 设置是否区分大小写
|
||||
def setcasesensitive(cs):
|
||||
return dll.setcasesensitive(cs)
|
||||
# 设置按键延时
|
||||
def setpresskeydelay(maxd,mind):
|
||||
return dll.setpresskeydelay(maxd,mind)
|
||||
# 设置输入字符串间隔时间
|
||||
def setinputstringintervaltime(maxd,mind):
|
||||
return dll.setinputstringintervaltime(maxd,mind)
|
||||
# 设置中文输入模式
|
||||
def setchineseinputmode(mode):
|
||||
return dll.setchineseinputmode(mode)
|
||||
|
||||
|
||||
# ================ 鼠标操作
|
||||
# 按下鼠标键
|
||||
def pressmousebutton(mbtn):
|
||||
return dll.pressmousebutton(mbtn)
|
||||
# 释放鼠标键
|
||||
def releasemousebutton(mbtn):
|
||||
return dll.releasemousebutton(mbtn)
|
||||
# 按下并释放鼠标键
|
||||
def pressandreleasemousebutton(mbtn):
|
||||
return dll.pressandreleasemousebutton(mbtn)
|
||||
# 判断鼠标按键状态
|
||||
def ismousebuttonpressed(mbtn):
|
||||
return dll.ismousebuttonpressed(mbtn)
|
||||
# 释放所有鼠标按键
|
||||
def releaseallmousebutton():
|
||||
return dll.releaseallmousebutton()
|
||||
# 相对移动鼠标
|
||||
def movemouserelative(x,y):
|
||||
return dll.movemouserelative(x,y)
|
||||
# 移动鼠标到指定坐标
|
||||
def movemouseto(x,y):
|
||||
return dll.movemouseto(x,y)
|
||||
# 获取鼠标当前位置
|
||||
def getmousex():
|
||||
return dll.getmousex()
|
||||
def getmousey():
|
||||
return dll.getmousey()
|
||||
# 移动鼠标滚轮
|
||||
def movemousewheel(z):
|
||||
return dll.movemousewheel(z)
|
||||
# 设置鼠标按键延时
|
||||
def setpressmousebuttondelay(maxd,mind):
|
||||
return dll.setpressmousebuttondelay(maxd,mind)
|
||||
# 设置鼠标移动延时
|
||||
def setmousemovementdelay(maxd,mind):
|
||||
return dll.setmousemovementdelay(maxd,mind)
|
||||
# 设置鼠标移动速度
|
||||
def setmousemovementspeed(speedvalue):
|
||||
return dll.setmousemovementspeed(speedvalue)
|
||||
# 设置鼠标移动模式
|
||||
def setmousemovementmode(modevalue):
|
||||
return dll.setmousemovementmode(modevalue)
|
||||
|
||||
|
||||
# ================ 双机设备接口
|
||||
# 设置鼠标当前位置(针对不支持绝对值的鼠标)
|
||||
def setmouseposition(x,y):
|
||||
return dll.setmouseposition(x,y)
|
||||
# 设置鼠标绝对位置(针对支持绝对值的鼠标)
|
||||
def setmouseabsoluteposition(x,y):
|
||||
return dll.setmouseabsoluteposition(x,y)
|
||||
# 设置鼠标逻辑位置(不移动鼠标,只更新内部当前坐标)
|
||||
def setmouselogicalposition(x,y):
|
||||
return dll.setmouselogicalposition(x,y)
|
||||
# 相对移动鼠标(只移动鼠标,不更新内部当前坐标)
|
||||
def movemouserelative_ncc(x,y):
|
||||
return dll.movemouserelative_ncc(x,y)
|
||||
# 设置被控端屏幕分辨率
|
||||
def setclientscreenresolution(width,height):
|
||||
return dll.setclientscreenresolution(width,height)
|
||||
# 获取被控端屏幕分辨率
|
||||
def getclientscreenresolution():
|
||||
return dll.getclientscreenresolution().decode("utf-8")
|
||||
# 选择被控端(对于APV系列的一控多模式,指定键盘鼠标操作对应的设备)
|
||||
def selectsubdevice(addr):
|
||||
return dll.selectsubdevice(addr)
|
||||
# 修改被控端设备ID devtype: 0 主控端,1 被控端键盘(U2),2 被控端鼠标(U2),3 被控端复合键鼠(U1)
|
||||
def setslavedeviceid(vid,pid,devtype):
|
||||
return dll.setslavedeviceid(vid,pid,devtype)
|
||||
|
||||
|
||||
# ================ 加密狗操作
|
||||
# 初始化加密狗
|
||||
def initializedongle():
|
||||
return dll.initializedongle()
|
||||
# 设置读密码
|
||||
def setreadpassword(writepwd,newpwd):
|
||||
return dll.setreadpassword(bytes(writepwd,"utf-8"),bytes(newpwd,"utf-8"))
|
||||
# 设置写密码
|
||||
def setwritepassword(oldpwd,newpwd):
|
||||
return dll.setwritepassword(bytes(oldpwd,"utf-8"),bytes(newpwd,"utf-8"))
|
||||
# 从设备读字符串
|
||||
def readstring(readpwd,addr,count):
|
||||
return dll.readstring(bytes(readpwd,"utf-8"),addr,count).decode("utf-8", errors="ignore")
|
||||
# 将字符串写入设备
|
||||
def writestring(writepwd,str,addr):
|
||||
return dll.writestring(bytes(writepwd,"utf-8"),bytes(str,"utf-8"),addr)
|
||||
# 设置密钥
|
||||
def setencryptionkey(writepwd,cipher):
|
||||
return dll.setencryptionkey(bytes(writepwd,"utf-8"),bytes(cipher,"utf-8"))
|
||||
# 加密字符串
|
||||
def encryptstring(str):
|
||||
return dll.encryptstring(bytes(str,"utf-8")).decode("utf-8")
|
||||
# 解密字符串
|
||||
def decryptstring(str):
|
||||
return dll.decryptstring(bytes(str,"utf-8")).decode("utf-8")
|
||||
|
||||
|
||||
# ================ 电源控制接口
|
||||
# 按下电源按钮
|
||||
def presspowerbutton():
|
||||
return dll.presspowerbutton()
|
||||
# 释放电源按钮
|
||||
def releasepowerbutton():
|
||||
return dll.releasepowerbutton()
|
||||
# 按下并释放电源按钮
|
||||
def pressandreleasepowerbutton():
|
||||
return dll.pressandreleasepowerbutton()
|
||||
# 获取电源工作状态
|
||||
def getpowerstatus():
|
||||
return dll.getpowerstatus()
|
||||
|
||||
|
||||
# ================ 设备定义接口
|
||||
# 修改设备速度
|
||||
def setspeed(speed):
|
||||
return dll.setspeed()
|
||||
# 修改设备ID
|
||||
def setdeviceid(vid,pid):
|
||||
return dll.setdeviceid(vid,pid)
|
||||
# 恢复设备默认ID
|
||||
def restoredeviceid():
|
||||
return dll.restoredeviceid()
|
||||
# 获取当前设备VID
|
||||
def getvid():
|
||||
return dll.getvid()
|
||||
# 获取当前设备PID
|
||||
def getpid():
|
||||
return dll.getpid()
|
||||
# 设置产品名称
|
||||
def setproductname(name):
|
||||
return dll.setproductname(bytes(name,"gbk"))
|
||||
# 获取产品名称
|
||||
def getproductname():
|
||||
return dll.getproductname().decode("gbk")
|
||||
|
||||
|
||||
# ================ 其他操作
|
||||
# 获取当前SDK库类型
|
||||
def sdktype():
|
||||
return dll.sdktype().decode("utf-8")
|
||||
# 获取当前SDK库版本
|
||||
def sdkversion():
|
||||
return dll.sdkversion().decode("utf-8")
|
||||
31
Ghostbox_ddl/test_ghostbox.py
Normal file
31
Ghostbox_ddl/test_ghostbox.py
Normal file
@@ -0,0 +1,31 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import ghostbox as gb
|
||||
import time
|
||||
|
||||
print(f"{gb.sdktype()}({gb.sdkversion()})")
|
||||
|
||||
# 打开设备
|
||||
print(gb.opendevice())
|
||||
#print(gb.opendevicebyid(0x5188,0x1801))
|
||||
#print(gb.opendevicebypath("\\\\?\\hid#vid_5188&pid_1801&mi_02#7&28610698&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}"))
|
||||
# 获取设备型号
|
||||
print(gb.getmodel())
|
||||
# 获取硬件版本号
|
||||
print(gb.getfirmwareversion())
|
||||
# 按win键
|
||||
# print(gb.pressandreleasekeybyname("win"))
|
||||
# 移动鼠标
|
||||
# gb.setmousemovementmode(3)
|
||||
# gb.setmousemovementdelay(3,5)
|
||||
# print(gb.movemouseto(100,100))
|
||||
|
||||
gb.presskeybyname("right")
|
||||
gb.presskeybyname("up")
|
||||
time.sleep(3)
|
||||
gb.releaseallkey()
|
||||
|
||||
# gb.combinationkey("win+r")
|
||||
|
||||
# time.sleep(2)
|
||||
# print(gb.getcapslock())
|
||||
# gb.inputstring("xxxDDDff")
|
||||
Reference in New Issue
Block a user