玄関へお回り下さい。
ローカルコンピューター上で実行しているプロセスを取得 (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 クラス のメンバーを見て下さい。





2004/05/24
2005/09/23


VBレスキュー(花ちゃん)
VB.NET2003  VB2005