如何确定特定进程是否正在运行

时间:2013-03-09 15:00:14

标签: vb.net skype4com

我正在构建一个应用程序,以便在运行特定程序时将Skype状态更改为忙碌状态。我尝试了以下代码:

Private Sub WaitTimer_Tick(sender As Object, e As EventArgs) Handles WaitTimer.Tick
        For Each Me.Process In Process.GetProcesses(My.Computer.Name)
            On Error Resume Next
            If Process.ProcessName = Process.ProcessName = "SCII" Then
                skype.Changeuserstatus(TUserStatus.cusAway)
                Button1.Text = "SCII is running"
                Exit Sub
            End If
        Next
        Button1.Text = "SCII is not running"
    End Sub

每当我运行它时,它总是说SCII是开放的,而不是。我究竟做错了什么?有没有更好的方法来检查除计时器之外的运行进程?

作为旁注,我导入了Skype4COMLib。

3 个答案:

答案 0 :(得分:2)

这是问题所在:

If Process.ProcessName = Process.ProcessName = "SCII" Then

应该是:

If Process.ProcessName = "SCII" Then

答案 1 :(得分:1)

问题是On Error Resume Next。这是在if语句中恢复的。由于比较(Process.ProcessName = Process.ProcessName) = "SCII"总是抛出异常,所以总是在第一个循环中的if内部恢复。

如果您不希望发生错误,请考虑删除On Error Resume Next,或者如果您这样做,请将其替换为try catch块。

答案 2 :(得分:0)

这会在消息框中告诉您是否从所有正在运行的进程中找到了一个进程。如果进程正在运行,它将在几秒钟左右显示出来。

Sub CheckIfRunning()
    Dim pList() As System.Diagnostics.Process = System.Diagnostics.Process.GetProcesses
    For Each proc As System.Diagnostics.Process In pList
        If proc.ProcessName.ToString = "App".ToString Then
              MsgBox(proc.ProcessName.ToString & " Found")
        End If
    Next
End Sub