ghostbox.py 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. # -*- coding: utf-8 -*-
  2. import platform
  3. from ctypes import *
  4. import os
  5. # 加载DLL
  6. script_dir = os.path.dirname(os.path.abspath(__file__))
  7. if platform.architecture()[0] == "64bit":
  8. dll_path = os.path.join(script_dir, "gbild64.dll")
  9. else:
  10. dll_path = os.path.join(script_dir, "gbild32.dll")
  11. dll = windll.LoadLibrary(dll_path)
  12. # 设置接口返回值类型
  13. dll.getmodel.restype = c_char_p
  14. dll.getserialnumber.restype = c_char_p
  15. dll.getproductiondate.restype = c_char_p
  16. dll.getfirmwareversion.restype = c_char_p
  17. dll.getclientscreenresolution.restype = c_char_p
  18. dll.readstring.restype = c_char_p
  19. dll.encryptstring.restype = c_char_p
  20. dll.decryptstring.restype = c_char_p
  21. dll.getproductname.restype = c_char_p
  22. dll.sdktype.restype = c_char_p
  23. dll.sdkversion.restype = c_char_p
  24. # ================ 设备操作
  25. # 打开设备(根据设备序号)
  26. def opendevice(index=0):
  27. return dll.opendevice(index)
  28. # 打开设备(根据设备ID)
  29. def opendevicebyid(vid,pid):
  30. return dll.opendevicebyid(vid,pid)
  31. # 打开设备(根据设备路径)
  32. def opendevicebypath(path):
  33. return dll.opendevicebypath(bytes(path,"utf-8"))
  34. # 检查设备是否连接
  35. def isconnected():
  36. return dll.isconnected()
  37. # 关闭设备
  38. def closedevice():
  39. return dll.closedevice()
  40. # 复位设备
  41. def resetdevice():
  42. return dll.resetdevice()
  43. # ================ 设备信息
  44. # 获取设备型号
  45. def getmodel():
  46. return dll.getmodel().decode("utf-8")
  47. # 获取设备序列号
  48. def getserialnumber():
  49. return dll.getserialnumber().decode("utf-8")
  50. # 获取设备生产日期
  51. def getproductiondate():
  52. return dll.getproductiondate().decode("utf-8")
  53. # 获取设备固件版本号
  54. def getfirmwareversion():
  55. return dll.getfirmwareversion().decode("utf-8")
  56. # ================ 键盘操作
  57. # 按下键
  58. def presskeybyname(keyn):
  59. return dll.presskeybyname(bytes(keyn,"utf-8"))
  60. def presskeybyvalue(keyv):
  61. return dll.presskeybyvalue(keyv)
  62. # 释放键
  63. def releasekeybyname(keyn):
  64. return dll.releasekeybyname(bytes(keyn,"utf-8"))
  65. def releasekeybyvalue(keyv):
  66. return dll.releasekeybyvalue(keyv)
  67. # 按下并释放键
  68. def pressandreleasekeybyname(keyn):
  69. return dll.pressandreleasekeybyname(bytes(keyn,"utf-8"))
  70. def pressandreleasekeybyvalue(keyv):
  71. return dll.pressandreleasekeybyvalue(keyv)
  72. # 判断键盘按键状态
  73. def iskeypressedbyname(keyn):
  74. return dll.iskeypressedbyname(bytes(keyn,"utf-8"))
  75. def iskeypressedbyvalue(keyv):
  76. return dll.iskeypressedbyvalue(keyv)
  77. # 释放所有键盘按键
  78. def releaseallkey():
  79. return dll.releaseallkey()
  80. # 组合按键
  81. def combinationkey(keys):
  82. return dll.combinationkey(bytes(keys,"utf-8"))
  83. # 输入字符串
  84. def inputstring(str):
  85. return dll.inputstring(bytes(str,"utf-8"))
  86. # 获取大写锁定状态
  87. def getcapslock():
  88. return dll.getcapslock()
  89. # 获取数字键盘锁定状态
  90. def getnumlock():
  91. return dll.getnumlock()
  92. # 设置是否区分大小写
  93. def setcasesensitive(cs):
  94. return dll.setcasesensitive(cs)
  95. # 设置按键延时
  96. def setpresskeydelay(maxd,mind):
  97. return dll.setpresskeydelay(maxd,mind)
  98. # 设置输入字符串间隔时间
  99. def setinputstringintervaltime(maxd,mind):
  100. return dll.setinputstringintervaltime(maxd,mind)
  101. # 设置中文输入模式
  102. def setchineseinputmode(mode):
  103. return dll.setchineseinputmode(mode)
  104. # ================ 鼠标操作
  105. # 按下鼠标键
  106. def pressmousebutton(mbtn):
  107. return dll.pressmousebutton(mbtn)
  108. # 释放鼠标键
  109. def releasemousebutton(mbtn):
  110. return dll.releasemousebutton(mbtn)
  111. # 按下并释放鼠标键
  112. def pressandreleasemousebutton(mbtn):
  113. return dll.pressandreleasemousebutton(mbtn)
  114. # 判断鼠标按键状态
  115. def ismousebuttonpressed(mbtn):
  116. return dll.ismousebuttonpressed(mbtn)
  117. # 释放所有鼠标按键
  118. def releaseallmousebutton():
  119. return dll.releaseallmousebutton()
  120. # 相对移动鼠标
  121. def movemouserelative(x,y):
  122. return dll.movemouserelative(x,y)
  123. # 移动鼠标到指定坐标
  124. def movemouseto(x,y):
  125. return dll.movemouseto(x,y)
  126. # 获取鼠标当前位置
  127. def getmousex():
  128. return dll.getmousex()
  129. def getmousey():
  130. return dll.getmousey()
  131. # 移动鼠标滚轮
  132. def movemousewheel(z):
  133. return dll.movemousewheel(z)
  134. # 设置鼠标按键延时
  135. def setpressmousebuttondelay(maxd,mind):
  136. return dll.setpressmousebuttondelay(maxd,mind)
  137. # 设置鼠标移动延时
  138. def setmousemovementdelay(maxd,mind):
  139. return dll.setmousemovementdelay(maxd,mind)
  140. # 设置鼠标移动速度
  141. def setmousemovementspeed(speedvalue):
  142. return dll.setmousemovementspeed(speedvalue)
  143. # 设置鼠标移动模式
  144. def setmousemovementmode(modevalue):
  145. return dll.setmousemovementmode(modevalue)
  146. # ================ 双机设备接口
  147. # 设置鼠标当前位置(针对不支持绝对值的鼠标)
  148. def setmouseposition(x,y):
  149. return dll.setmouseposition(x,y)
  150. # 设置鼠标绝对位置(针对支持绝对值的鼠标)
  151. def setmouseabsoluteposition(x,y):
  152. return dll.setmouseabsoluteposition(x,y)
  153. # 设置鼠标逻辑位置(不移动鼠标,只更新内部当前坐标)
  154. def setmouselogicalposition(x,y):
  155. return dll.setmouselogicalposition(x,y)
  156. # 相对移动鼠标(只移动鼠标,不更新内部当前坐标)
  157. def movemouserelative_ncc(x,y):
  158. return dll.movemouserelative_ncc(x,y)
  159. # 设置被控端屏幕分辨率
  160. def setclientscreenresolution(width,height):
  161. return dll.setclientscreenresolution(width,height)
  162. # 获取被控端屏幕分辨率
  163. def getclientscreenresolution():
  164. return dll.getclientscreenresolution().decode("utf-8")
  165. # 选择被控端(对于APV系列的一控多模式,指定键盘鼠标操作对应的设备)
  166. def selectsubdevice(addr):
  167. return dll.selectsubdevice(addr)
  168. # 修改被控端设备ID devtype: 0 主控端,1 被控端键盘(U2),2 被控端鼠标(U2),3 被控端复合键鼠(U1)
  169. def setslavedeviceid(vid,pid,devtype):
  170. return dll.setslavedeviceid(vid,pid,devtype)
  171. # ================ 加密狗操作
  172. # 初始化加密狗
  173. def initializedongle():
  174. return dll.initializedongle()
  175. # 设置读密码
  176. def setreadpassword(writepwd,newpwd):
  177. return dll.setreadpassword(bytes(writepwd,"utf-8"),bytes(newpwd,"utf-8"))
  178. # 设置写密码
  179. def setwritepassword(oldpwd,newpwd):
  180. return dll.setwritepassword(bytes(oldpwd,"utf-8"),bytes(newpwd,"utf-8"))
  181. # 从设备读字符串
  182. def readstring(readpwd,addr,count):
  183. return dll.readstring(bytes(readpwd,"utf-8"),addr,count).decode("utf-8", errors="ignore")
  184. # 将字符串写入设备
  185. def writestring(writepwd,str,addr):
  186. return dll.writestring(bytes(writepwd,"utf-8"),bytes(str,"utf-8"),addr)
  187. # 设置密钥
  188. def setencryptionkey(writepwd,cipher):
  189. return dll.setencryptionkey(bytes(writepwd,"utf-8"),bytes(cipher,"utf-8"))
  190. # 加密字符串
  191. def encryptstring(str):
  192. return dll.encryptstring(bytes(str,"utf-8")).decode("utf-8")
  193. # 解密字符串
  194. def decryptstring(str):
  195. return dll.decryptstring(bytes(str,"utf-8")).decode("utf-8")
  196. # ================ 电源控制接口
  197. # 按下电源按钮
  198. def presspowerbutton():
  199. return dll.presspowerbutton()
  200. # 释放电源按钮
  201. def releasepowerbutton():
  202. return dll.releasepowerbutton()
  203. # 按下并释放电源按钮
  204. def pressandreleasepowerbutton():
  205. return dll.pressandreleasepowerbutton()
  206. # 获取电源工作状态
  207. def getpowerstatus():
  208. return dll.getpowerstatus()
  209. # ================ 设备定义接口
  210. # 修改设备速度
  211. def setspeed(speed):
  212. return dll.setspeed()
  213. # 修改设备ID
  214. def setdeviceid(vid,pid):
  215. return dll.setdeviceid(vid,pid)
  216. # 恢复设备默认ID
  217. def restoredeviceid():
  218. return dll.restoredeviceid()
  219. # 获取当前设备VID
  220. def getvid():
  221. return dll.getvid()
  222. # 获取当前设备PID
  223. def getpid():
  224. return dll.getpid()
  225. # 设置产品名称
  226. def setproductname(name):
  227. return dll.setproductname(bytes(name,"gbk"))
  228. # 获取产品名称
  229. def getproductname():
  230. return dll.getproductname().decode("gbk")
  231. # ================ 其他操作
  232. # 获取当前SDK库类型
  233. def sdktype():
  234. return dll.sdktype().decode("utf-8")
  235. # 获取当前SDK库版本
  236. def sdkversion():
  237. return dll.sdkversion().decode("utf-8")