用SHELL返回一个值。
如果这个值不为0,就证明这个程序开始运行了!!!
如果关闭了这个程序,将返回值是0
把这个返回值的变量放在时钟控件里面进行时时监控~~~~~这样就可以计算出用的时间了~~~~~~~~~~~~

解决方案 »

  1.   


    不是吧?我认为不是这样。应该用WaitForSingleObject等待对方进程结束才可以确认吧或者用不断检测系统窗口(后进程)的办法。
      

  2.   

    哈哈,
    我有个笨方法,
    不断的enumprocess
    记录那个游戏的进程存在的时间就好了。
    呵呵
      

  3.   

    谢谢大家关注我的帖子。
    to--bob008(冻冬) :怎么设置关联?
      

  4.   

    运行其他程序,并等待执行完毕
    在程序中,我们可能要打开一个程序,如:Notepad,并要求在该程序结束后,才继续其他的操作。以下的代码完成这样的要求。
    声明:
    Const SYNCHRONIZE = &H100000
    Const INFINITE = &HFFFFFFFF 
    Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long 
    Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long 
    Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
    例子:(以 Notepad 为例)
    Dim pId As Long, pHnd As Long 
    pId = Shell("Notepad", vbNormalFocus) 
    pHnd = OpenProcess(SYNCHRONIZE, 0, pId) ' 取得 Process Handle
    If pHnd <> 0 Then 
    Call WaitForSingleObject(pHnd, INFINITE) ' 等待程序结束
    Call CloseHandle(pHnd) 
    End If 
      

  5.   

    如果能知道WINDOWS 起动了某某程序的消息,并记录唯一可识别的内容,然后再得到WINDOWS 关闭了某某程序的消息,并比较唯一可识别的内容不就可以了。