怎么用vb判断电脑的某个进程是否存在。如果存在则焦点切换到该程序。

解决方案 »

  1.   

    参考http://zhidao.baidu.com/question/44998050
      

  2.   

    知道主窗体的标题吗?
    FindWindow
    SetWindowPox
      

  3.   

    知道主窗体的标题吗?
    FindWindow
    SetWindowPos
      

  4.   

    一、使用WMI获得指定程序的进程ID,如果ID为0则表示不存在,代码如下:Function GetProcessID(strExeName As String) As Long
        Dim objWMIService As Object
        Dim colProcesslist As Object
        Dim objProcess As Object
        
        Set objWMIService = GetObject("winmgmts:")
        Set colProcesslist = objWMIService.ExecQuery("select * from win32_process where name='" & Trim(strExeName) & "'")
        For Each objProcess In colProcesslist
            GetProcessID = objProcess.Handle
            Exit Function
        Next
    End Function二、如果存窗口存在,则使用EnumWindows枚举所有顶级窗口,枚举时使用GetWindowThreadProcessId获得每个窗口的进程ID,和原来通过WMI获得的进程ID一下,如果是同一个进程,则使用SetForegroundWindow或BringWindowToTop函数将窗口置前,再使用SetFocus激活窗口就行了。
      

  5.   

    我的问题是,我做了一个软件是全屏运行,可以通过软件上的按键调用a.exe程序。但是a程序运行后可能失去焦点,被我的软件覆盖(alt+tab可调出)。所以我想加上代码,当点击按键的时候判断a程序是否运行,若运行中则a程序获取焦点。我现在就是不知道怎么让a程序获取焦点重新出现在软件前面。
      

  6.   

    判断a.exe是否运行可以用上述代码,放到前面可以用FindWindow和SetWindowPos两个API函数,SetWindowPos可以让窗口置顶。
      

  7.   

    我不太会用。您等给个代码么?我可以判断进程存不存在。我就是需要他获取焦点就行了,就是类似于alt+tab的功能就行。谢谢了。。
      

  8.   

    我的建议是,在找到窗口后,使用setparent将其窗口设置为自己的子窗口试试.