[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 ivor 于 2018-2-14 22:14 编辑

测试程序cmd.exe  ,按键精灵2014代码
有一点点BUG就是光标闪烁会造成判断误差,几率是50%,如果目标程序静止,多检测几次也可以触发重启代码,
update:增加For 循环,修复光标闪烁BUG
  1. //下面三个变量自行修改
  2. //************************
  3. //运行的文件路径
  4. filePath = "cmd.exe"
  5. //窗口类名
  6. windowClass = "ConsoleWindowClass"
  7. //循环时间间隔单位毫秒
  8. //5秒
  9. delayTime=5000
  10. //************************
  11. //下面这句是查找窗口类名("Notepad")或者标题(0),返回找到的句柄Hwnd
  12. Hwnd = Plugin.Window.Find(windowClass, 0)
  13. //窗口还原
  14. Call Plugin.Window.Restore(Hwnd)
  15. //下面这句是得到窗口句柄的客户区大小
  16. sRect = Window.GetClientRect(Hwnd)
  17. //MsgBox "得到窗口句柄的客户区大小为:"& sRect   
  18. //下面这句用于分割字符串,将横坐标和纵坐标分成两个字符串   
  19. dim MyArray   
  20. MyArray = Split(sRect, "|")   
  21. //下面这句将字符串转换成数值   
  22. L = Clng(MyArray(0)): T = Clng(MyArray(1))   
  23. R = Clng(MyArray(2)): B = Clng(MyArray(3))   
  24. Call Plugin.Pic.PrintScreen(L, T, R, B,"C:\consol.bmp")
  25. //区域找图
  26. Delay delayTime
  27. For 5
  28. iCoord = Plugin.Pic.FindPic(L-1, T-1, R+1, B+1, "C:\consol.bmp", 0, 0.9)
  29. Delay 200
  30. //失败返回:-1|-1
  31. //MsgBox iCoord
  32. If iCoord <> "-1|-1" Then
  33. //
  34. //此处代码为重启程序
  35. //
  36. //MsgBox "目标界面已静止,即将重启软件 " & Hwnd
  37. Call Plugin.Memory.TerminateProc(Hwnd)
  38. //程序的路径
  39. Call RunApp(filePath)
  40. Exit For
  41. End If
  42. Next
复制代码
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

  1. get-process 2018年预算执行cmd | select-object * | out-file psInfo.txt
复制代码
多检测几次看看是否能根据进程信息判断程序卡住了。
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

回复 12# 踏沙行


   是的
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

返回列表