我们准备在python中调用按键精灵的大漠插件来完成模拟驱动的鼠标键盘操作。大漠 综合 插件 (dm.dll)采用vc6.0编写,识别速度超级快! 采用COM接口编写,适用于所有语言调用。
网上相关教程极少,我们只能一步步自己摸索。
首先下载大漠核心组件dm.dll,在win10的新版总是出现闪退bug,为了稳定性,选择比较老的3.2xxx版本了。
下载地址
下载解压后,将dm.dll复制到C:\Windows\SysWOW64文件夹里。(显然你应该是64位系统,应该没人用32位了吧)
以管理员方式打开cmd,如果你是windows管理员账号直接打开应该就没问题了
键入:
C:cd C:\Windows\SysWOW64regsvr32 dm.dll
大功告成了,注册完成
import win32com.clientdm = win32com.client.Dispatch('dm.dmsoft') #调用大漠插件dm.moveto(10,10)
其中win32com帮我们加载了dll文件,直接调用dm.function dm.constant就可以使用插件了,注意有返回值的对象最好写上等于符号,哪怕他返回的变量没有用(vc的语法)
然后运行,发现一长串的报错…
别急,分析报错,我们的python版本一般来说我64位的,而大漠是02年推出的脚本插件,是基于按键精灵和vc语言开发的Active X脚本,它只支持32位。
为了支持插件我们只好下载一个32位的python,下载地址
我下载的是python3.6-32的
下载之后最好把add path勾选,然后把之前64位的path再系统变量里取消掉,之后再讲为什么要这么做。之后呢,如果使用pycharm一定要选好解释器(32位),如果还用了ipython等工具,一定要把默认解释器也相应修改。
当然最简单的就是在visual code加上Ipython模块上编辑啦,你直接替换一下解释器属性就行了。
如果以上配置成功,再运行以上代码。你的输出大概这样,然后鼠标会移到屏幕左上角。
仔细阅读插件文档加调试了一两天之后…
彻底放弃了long SetSimMode(mode)这个函数,这个函数总是返回值为0,提示我未注册,导致我没法进入硬件驱动模式,从而被楚留香屏蔽了脚本输入。
直到今天再读文档发现了这个函数
于是修改代码为如下,保存名字为 test.py
注:这段代码是不可以直接运行的,因为大漠插件要求管理员权限,直接run可能运行失败
运行方法:
1.首先将python3.6-32位的path加入系统变量Path中
2.以管理员身份启动命令行
3.键入 python X:\xxxx(你的路径)\test.py
如果你没添加path,要么去修改path,要么直接cd到python3.6-32位目录下输入该指令
import win32com.clientimport win32conimport win32guiimport timehwnd=win32gui.FindWindow(None,'楚留香')if(win32gui.IsIconic(hwnd)):win32gui.ShowWindow(hwnd, win32con.SW_RESTORE)win32gui.SetWindowPos(hwnd, win32con.HWND_TOPMOST, 300,200,1200,800,win32con.SWP_SHOWWINDOW)dm = win32com.client.Dispatch('dm.dmsoft') #调用大漠插件re=dm.BindWindow(hwnd,"normal","dx2","dx",4)print(re)print(dm.GetLastError())def keydownup(num,times):while True:dm_res=dm.keypress(num)time.sleep(times)keydownup(27,3)
如果打印值不为1、0,说明配置是有问题
可能导致问题几点:
1.关闭uca,拿win10来说控制面板-安全和维护-关闭所有防火墙-更改用户控制和账户控制设置,拉到最低
2.重启开机按F1,F2和DEL,进入BIOS模式,进入ROOT或者Security选项卡,把Secure Boot 选项的enabled 改为disable
3.将游戏同时也以管理员身份启动
这段代码是每隔3s给楚留香发送1个ESC键,如果这个ESC没被屏蔽掉,证明我们模拟输入就成功了。
然后游戏中显然ESC键生效了,我们已经基本掌握了如何用python+大漠插件方式向“楚留香”发送模拟指令,接下来的逻辑工作无非是确定每个点的坐标,然后进行键位组合即可。
但是还有一个问题没解决,就是如何识别文字。
摆摊界面的价格,机器是不可能自动识别的,我们必须识别出来再与我们理想价格做一个比较,才能辅助我们抢不抢购。
附录:大漠插件虚拟键码
key_str 虚拟键码
"1",49"2",50"3",51"4",52"5",53"6",54"7",55"8",56"9",57"0",48"-",189"=",187"back", 8"a",65"b",66"c",67"d",68"e",69"f",70"g",71"h",72"i",73"j",74"k",75"l",76"m",77"n",78"o",79"p",80"q",81"r",82"s",83"t",84"u",85"v",86"w",87"x",88"y",89"z",90"ctrl", 17"alt", 18"shift",16"win", 91"space",32"cap", 20"tab", 9"~",192"esc", 27"enter",13"up", 38"down", 40"left", 37"right",39"option",93"print",44"delete",46"home", 36"end", 35"pgup", 33"pgdn", 34"f1", 112"f2", 113"f3", 114"f4", 115"f5", 116"f6", 117"f7", 118"f8", 119"f9", 120"f10", 121"f11", 122"f12", 123"[",219"]",221"\\", 220";",186"'",222",",188".",190"/",191