我正在构建一个应用程序,以便在运行特定程序时将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。
答案 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