5.ローカルコンピューター上で実行しているプロセスを取得(04_App_05) (旧、SampleNo.052) |
1.ローカルコンピューター上で実行しているすべてのプロセスを取得 2.実行している指定のプロセス名のすべてのプロセスを取得 3.指定のメモ帳のファイルを起動している notepad.exe を探し終了させる 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86 Option :[Compare Text] [Explicit On] [Infer On] [Strict On] Imports :追加なし 参照設定:追加なし その他 :Process クラス のメンバーには、この他 かなりの プロパティ や メソッド 等があります。 :詳しくは、MSDN で Process クラス のメンバーを見て下さい。 このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので) 必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい) |
1.ローカルコンピューター上で実行しているすべてのプロセスを取得 |
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'ローカルコンピューター上で実行しているすべてのプロセスを取得 Dim localProcAll As System.Diagnostics.Process() = System.Diagnostics.Process.GetProcesses() Dim p As System.Diagnostics.Process For Each p In localProcAll Try '取得したプロセスの プロセスID・プロセス名・ウィンドウのキャプション名を表示 If p.Handle <> IntPtr.Zero Then If p.MainWindowHandle <> IntPtr.Zero Then '通常に起動しているアプリケーション類 Console.WriteLine("{0} / {1} : {2} :Window のハンドルが取得できたもの {3}", _ p.Id, p.ProcessName, p.MainWindowTitle, p.MainWindowHandle) Else 'Window を非表示で動作(起動)しているアプリケーション類 Console.WriteLine("{0} / {1} : ハンドルが取得できたもの {2}", p.Id, p.ProcessName, p.Handle) End If End If Catch ex As Exception Console.WriteLine("{0} / {1} : ハンドルがないもの", p.Id, p.ProcessName) End Try 'その中から指定のアプリを探す場合 If p.ProcessName = "notepad" Then MessageBox.Show("メモ帳が起動しています") End If Next End Sub |
2.実行している指定のプロセス名のすべてのプロセスを取得 |
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 'すでに起動している メモ帳 をすべて取得 'Process.GetProcessesByName メソッド '新しい Process コンポーネントの配列を作成し、 '指定したプロセス名を共有する既存のプロセスリソースに関連付けます。 'ローカルコンピューター上で実行しているすべてのメモ帳のプロセスを取得 '(Win7 からは、なぜか Excel は1個しか取得できない) Dim localByName As Process() = Process.GetProcessesByName("notepad") 'メモ帳 Dim p As Process '取得したExcelの プロセスID・プロセス名・ウィンドウのキャプション名を表示 For Each p In localByName Console.WriteLine("{0} / {1} : {2}", p.Id, p.ProcessName, p.MainWindowTitle) 'p.CloseMainWindow() '終了させる場合 Next End Sub |
3.指定のメモ帳のファイルを起動している notepad.exe を探し終了させる |
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click '指定のメモ帳のファイルを起動している notepad.exe を探し終了させる Dim localByName As Process() = Process.GetProcessesByName("notepad") Dim p As Process Dim fn As String = "無題 - メモ帳" '起動中のメモ帳を取得 For Each p In localByName Console.WriteLine("{0} / {1} : {2}", p.Id, p.ProcessName, p.MainWindowTitle) '指定のファイル名(無題 - メモ帳)で起動中のメモ帳があれば終了する If System.String.Compare(p.MainWindowTitle, fn, True) = 0 Then '指定のウィンドウにクローズ メッセージを送信して、プロセスを終了 p.CloseMainWindow() End If Next End Sub |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |
指定のアプリが起動しているかを調査 起動中のアプリを取得 |