如题,如何判断某个应用程序是否在运行,无法从文件名去判断,因为可以改名字,也没法取标题,因为标题是实时变化的。。求任何可用的方法!!!

解决方案 »

  1.   

    if app.previnstance=true then
      

  2.   

    我觉得啊,这个判断特定程序是否在运行的标准,还是得你自己先确定好,再来论坛来问实现判断的代码.
    这是提供一些思路:
    1,程序主窗口的windows的classname
    2,该程序运行时是否创建了啥原子或mutex啥的(带是否可运行多个实例选项的程序一般会这样),或锁定了某个文件
    3,程序是否搞了啥隐藏的特殊窗口用来做运行时标识的
      

  3.   

    试这个,但是只能对于同一目录的程序做判断,如果把程序放到别的目录,就检测不出来了 Dim title As String
     
     If App.PrevInstance Then
     title = App.title
     
     Call MsgBox("这程式已执行", vbCritical)
     
     App.title = "" '如此才不会Avtivate到自己
     
     fm.Caption = ""
     AppActivate title 'activate先前就已行的程式
     End
     End IfEnd Sub
      

  4.   

    这个运行的软件是否是你的程式,
    如果是,很简单,直接运行的时候往注册表或者某个特定的位置写个标记用来记录目前程序正在运行.
    如果不是,你之前说了,不能判断标题,不能判断exe文件名,但是可以搜索内存.找到具有代表性的关键字.
    然后读取内存.
    思路就是这样,具体做法:
    1.用Ollydbg附加该进程,查看其是否含有静态的文本字串,如果有.搜索出来即可
    2.用程式枚举当前任务管理器中的所有进程,挨个去OpenProcess,然后ReadMemory 读取指定位置的内存值对比之前的 静态的文本字串 是否相同,是,就表示已经执行(重复可能性几率基本接近0)
      

  5.   

    if app.previnstance=true thenend if
      

  6.   

    简单点就定下你的key不就行了