1

特定のプログラムが実行されているときはいつでも 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 をインポートします。

4

3 に答える 3

2

これが問題です :

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

そのはず :

If Process.ProcessName = "SCII" Then
于 2013-03-09T15:30:41.473 に答える
1

問題はOn Error Resume Nextです。これは、ifステートメント内で再開されます。比較(Process.ProcessName = Process.ProcessName) = "SCII"では常に例外がスローされるため、最初のループのif内で常に再開します。

On Error Resume Nextエラーが予想されない場合は削除するか、エラーが発生したtry catch場合はブロックに置き換えることを検討してください。

于 2013-03-09T15:32:37.463 に答える