本帖最后由 ivor 于 2018-2-14 22:14 编辑
测试程序cmd.exe ,按键精灵2014代码
有一点点BUG就是光标闪烁会造成判断误差,几率是50%,如果目标程序静止,多检测几次也可以触发重启代码,
update:增加For 循环,修复光标闪烁BUG- //下面三个变量自行修改
- //************************
- //运行的文件路径
- filePath = "cmd.exe"
- //窗口类名
- windowClass = "ConsoleWindowClass"
- //循环时间间隔单位毫秒
- //5秒
- delayTime=5000
- //************************
-
-
- //下面这句是查找窗口类名("Notepad")或者标题(0),返回找到的句柄Hwnd
- Hwnd = Plugin.Window.Find(windowClass, 0)
- //窗口还原
- Call Plugin.Window.Restore(Hwnd)
-
- //下面这句是得到窗口句柄的客户区大小
- sRect = Window.GetClientRect(Hwnd)
- //MsgBox "得到窗口句柄的客户区大小为:"& sRect
- //下面这句用于分割字符串,将横坐标和纵坐标分成两个字符串
- dim MyArray
- MyArray = Split(sRect, "|")
- //下面这句将字符串转换成数值
- L = Clng(MyArray(0)): T = Clng(MyArray(1))
- R = Clng(MyArray(2)): B = Clng(MyArray(3))
-
- Call Plugin.Pic.PrintScreen(L, T, R, B,"C:\consol.bmp")
- //区域找图
- Delay delayTime
-
- For 5
-
- iCoord = Plugin.Pic.FindPic(L-1, T-1, R+1, B+1, "C:\consol.bmp", 0, 0.9)
- Delay 200
- //失败返回:-1|-1
- //MsgBox iCoord
- If iCoord <> "-1|-1" Then
- //
- //此处代码为重启程序
- //
- //MsgBox "目标界面已静止,即将重启软件 " & Hwnd
- Call Plugin.Memory.TerminateProc(Hwnd)
- //程序的路径
- Call RunApp(filePath)
- Exit For
- End If
- Next
复制代码
|