冥界3大法王 发表于 2017-3-15 23:48

AHK版本 得到程序运行时长,还请高人多提宝贵意见

F1::
Run , E:\Photoshop_CC2015\Photoshop.exe ,,, A_PID

i:=0
Loop
    {
      i:=i+1
      WinGetTitle , PID所匹配的标题, ahk_pid%A_PID%
      If (PID所匹配的标题<>"Adobe Photoshop CC 2015")                                       ;情况1,目标窗口标题名未出现!此时是桌面
          continue
    }until (PID所匹配的标题="Adobe Photoshop CC 2015")                                 ;直到发现PID所匹配的标题出现!

MsgBox , %i%毫秒`n发现PID所匹配的标题是%PID所匹配的标题%                         ;用此处当until(i>X的条件
ExitApp

冥界3大法王 发表于 2017-3-16 00:10

如何写出一个精确的 判断程序时长的程序来?

要求是这样的,双击程序时开始计时。。。。。直到目标程序窗口标题出现时 停止计时

我用AHK尝试着写了几个版本
发现最后得到的时长有很大的出入

1个版本是通过检测目标窗口标题是否出现作为依据,循环体结束时弹框报数,结果发现貌似人工双击版本的时长比 程序运行版本的时长 小一半。
2另一个版本是 得到PID所匹配的标题作为依据,那个感觉窗口未出现时就已经匹配到了

Run , E:\Photoshop_CC2015\Photoshop.exe ,,, A_PID
i:=0
Loop
{
    i:=i+1
      If !WinExist("Adobe Photoshop CC 2015")
      continue
}until WinExist("Adobe Photoshop CC 2015")
MsgBox , %i%
=============================================
F1::
Run , E:\Photoshop_CC2015\Photoshop.exe ,,, A_PID

i:=0
Loop
    {
      i:=i+1
      屏幕中心点X坐标:=Ceil(A_ScreenWidth/2)                      ;其实以下4行不起啥作用!
      屏幕中心点Y坐标:=Ceil(A_ScreenHeight/2)
      MouseMove , %屏幕中心点X坐标% , %屏幕中心点Y坐标%
      Click Left 1

      WinGetTitle , PID所匹配的标题, ahk_pid%A_PID%
      If (PID所匹配的标题<>"Adobe Photoshop CC 2015")                                       ;情况1,目标窗口标题名未出现!此时是桌面
          continue
    }until (PID所匹配的标题="Adobe Photoshop CC 2015")                                 ;直到发现PID所匹配的标题出现!

MsgBox , %i%毫秒`n发现PID所匹配的标题是%PID所匹配的标题%                         ;用此处当until(i>X的条件
ExitApp
==========================================
最有还有一个严重问题WIN7X64位系统上 貌似 普遍现象是第一次运行的时长 比较少,而第二次时间短得多。

雪花飘飘 发表于 2017-3-16 05:59

非常 感谢 收藏 了
页: [1]
查看完整版本: AHK版本 得到程序运行时长,还请高人多提宝贵意见