ローカルコンピューター上で実行しているプロセスを取得 (3個) (SNo.052) 1.ローカルコンピューター上で実行しているすべてのプロセスを取得 2.実行している指定のプロセス名のすべてのプロセスを取得 (Excel.EXE がいくつ起動されているかを取得する) 3.指定のExcelファイルを起動しているExcel.EXEを探し終了させる |
|
使用コントロール | Button1 〜 Button3 |
その他条件 | WindowsXP(Vista) Visual Basic 2005(VB2008) |
1.ローカルコンピューター上で実行しているすべてのプロセスを取得
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click 'ローカル コンピューター上で実行しているすべてのプロセスを取得 Dim localProcAll As Process() = Process.GetProcesses() Dim p As Process For Each p In localProcAll '取得したプロセスの プロセスID・プロセス名・ウィンドウのキャプション名を表示 Console.WriteLine("{0} / {1} : {2}", p.Id, p.ProcessName, p.MainWindowTitle) 'その中から指定のアプリを探す場合 If p.ProcessName = "notepad" Then MessageBox.Show("メモ帳が起動しています") End If Next '結果の一部 ' 612 / smss : ' 3816 / 052 : ローカル コンピューター上で実行しているプロセスを取得(052) ' 1104 / svchost : End Sub |
|
2.実行している指定のプロセス名のすべてのプロセスを取得 (Excel.EXE がいくつ起動されているかを取得する) Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click 'すでに起動している Excel.EXE をすべて取得 'Process.GetProcessesByName メソッド '新しい Process コンポーネントの配列を作成し、 '指定したプロセス名を共有する既存のプロセス リソースに関連付けます。 'ローカル コンピューター上で実行しているすべてのメモ帳のプロセスを取得 Dim localByName As Process() = Process.GetProcessesByName("Excel") 'エクセル 'Dim localByName As Process() = Process.GetProcessesByName("notepad") 'メモ帳 'Dim localByName As Process() = Process.GetProcessesByName("calc") '電卓 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 '結果 '2588 / EXCEL : Microsoft Excel - test.xls '3684/EXCEL:Microsoft Excel - カラー設定値.xls '2588/EXCEL:Microsoft Excel - 16年度帳簿.xls '3972 / EXCEL : Microsoft Excel - Book1 End Sub |
|
3.指定のExcelファイルを起動しているExcel.EXEを探し終了させる Private Sub Button3_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button3.Click '指定のExcelファイルを起動しているExcel.EXEを探し終了させる Dim localByName As Process() = Process.GetProcessesByName("Excel") Dim p As Process Dim fn As String = "Microsoft Excel - " & "Test.xls" '起動中のExcelを取得 For Each p In localByName '指定のファイル名(Test.xls)で起動中のExcelがあれば終了する If System.String.Compare(p.MainWindowTitle, fn, True) = 0 Then '指定のウィンドウにクローズ メッセージを送信して、プロセスを終了 p.CloseMainWindow() End If Next End Sub |
|
Process クラス のメンバーには、この他 かなりの プロパティ や メソッド
等があります。 詳しくは、ヘルプで Process クラス のメンバーを見て下さい。 |