2

私のプログラムの一部は、別のプログラムまたは同じ名前の同じプログラムを閉じることです...これを行う方法を調べたところ、次のコードが得られました。

Dim myprocesses() As Process
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  For Each p As Process In myprocesses
    If p.MainWindowTitle.Contains("notepad") Then
      p.CloseMainWindow()
    End If
  Next
End Sub

動作するはずですが、実行すると、Nextステートメントに次のようなエラー メッセージが表示されます。

{"オブジェクト参照がオブジェクト インスタンスに設定されていません。"}

上記のコードの何が問題なのか誰か知っていますか?

更新:これらの回答のいくつかはうまくいくようです:)ありがとう。ただし、プログラムが約 30 秒までロードされないことがあるため (簡単にするためにメモ帳を置いただけです)、わずかな問題があります。そのため、ロード時に実際のプログラムではなく、PROCESS を閉じるコードが必要です。

ご理解いただければ幸いですxD ^^^^

4

2 に答える 2

2

明らかにmyprocesses()butを宣言したnullので、タスクを達成するには使用する必要がありますGetProcessesByName

For Each process1 As Object In Process.GetProcessesByName("Notepad")
    process1.Kill()
Next

しかし、これがプロセスを管理する適切な方法です。.exe

于 2013-01-27T21:47:56.690 に答える
1

ボタンクリックイベントで以下のコードを試してください:

Dim myProc As System.Diagnostics.Process
For Each myProc In System.Diagnostics.Process.GetProcesses
  Console.WriteLine(myProc.MainWindowTitle)
  If myProc.MainWindowTitle.ToUpper.Contains("NOTEPAD") Then
    myProc.CloseMainWindow()
  End If
Next
于 2013-01-27T21:55:48.133 に答える