我们通过易语言调用大漠图色插件,进行后台对游戏窗口的绑是首要的事情,问题是,如何获得句柄,如何判断游戏是否开启,如何保证绑定万无一失,那就的写的逻辑性要强一点,判断要多一点,循环利于的要好一点,在判断游戏是否在线时,使用了时钟组件,而时钟组件调用的事件里有循环,尽管加了处理事(),在没有开启游戏的状态下,仍会造成窗口假死,所以这里启用了线程,使得时钟事件非常顺畅。总之,本课示范了如何更加有效的绑定游戏窗口,在寻找窗口句柄时,用了两种方法,第一是dm.findwindow(),这个命令必须知道游戏窗口的标题,而有的游戏窗口 标题是无法获得,或者是 变化的,所以视频教程示范了第二种方法,采用取进程ID的方法。
易语言大漠剑侠情缘绑定游戏
易语言源码:
.版本 2
.支持库 EThread
.程序集 窗口程序集_启动窗口
.程序集变量 dm, E大漠
.程序集变量 hwnd, 整数型, , , 游戏窗口句柄
.程序集变量 ID数组, 整数型, , "0"
.子程序 __启动窗口_创建完毕
' 1、创建大漠对象
dm.创建 ()
' 2、设置大漠全局路径
dm.SetPath (取运行目录 ())
' 3、设置字库
' dm.SetDict (0, “剑侠情缘.txt”)
' 4、防止插件错误提示
dm.SetShowErrorMsg (0)
.子程序 绑定游戏
.局部变量 dm_ret, 整数型
' 2、绑定游戏
.如果 (hwnd > 0)
dm_ret = dm.BindWindow (hwnd, “dx”, “dx2”, “windows”, 0)
.如果 (dm_ret = 1)
标签_信息.标题 = “绑定成功”
.否则
标签_信息.标题 = “绑定失败”
.如果结束
.否则
信息框 (“请检查是否开启了游戏”, 0, , )
.如果结束
.子程序 _时钟1_周期事件, , , 判断游戏是否开启
启动线程 (&判断游戏开启, , )
.子程序 _按钮_绑定_被单击
绑定游戏 ()
.子程序 判断游戏开启
.局部变量 i, 整数型
' 1、寻找游戏窗口的句柄
i = 0
.判断循环首 (i = 0)
进程_取ID数组 (“gamefree.exe”, ID数组, )
.如果 (取数组成员数 (ID数组) > 0)
hwnd = 进程_ID取窗口句柄 (ID数组 [1], , , )
.如果真 (hwnd > 0)
标签_信息.标题 = “游戏开启成功”
时钟1.时钟周期 = 0
i = 1
.如果真结束
.否则
标签_信息.标题 = “请开启游戏”
.如果结束
处理事件 ()
.判断循环尾 ()
'
' hwnd = dm.FindWindow (, “剑侠情缘·网络版”)
.' 如果 (hwnd > 0)
' 标签_信息.标题 = “游戏开启成功”
' 时钟1.时钟周期 = 0
' i = 1
.否则
' 标签_信息.标题 = “请开启游戏”
' 处理事件 ()
.如果结束
' 判断循环尾 ()