[C#]取得本機端上,執行中有 GUI 介面的應用程式

  • 19038
  • 0
  • 2010-08-03

[C#]取得本機端上,執行中有 GUI 介面的應用程式

 

1. 問題描述

取得本機端上,執行中有 GUI 介面的應用程式

 

2. 方法

主要透過 :

(1) Environment.MachineName 屬性 : 取得這個本機電腦的 NetBIOS 名稱。

範例


 MessageBox.Show(System.Environment.MachineName.ToString());

執行結果

image image

 

(2) Process.GetProcesses 方法 (String) : 為指定電腦上的每個處理序資源建立新的 Process 元件。

其中參數 String : 要讀取處理序清單所在的電腦。

 

(3) Process.MainWindowHandle 屬性 : 取得相關處理序主視窗的視窗控制代碼。

MainWindowHandle 屬性是唯一識別與處理序相關之視窗的值

只有在有圖形介面時,處理序才會有與之相關的主視窗,如果相關處理序沒有主視窗,MainWindowHandle 值為零。

 

整合(1)(2),我們可以取得本機端上執行中的應用程式,加上判斷 MainWindowHandle 為非零值的應用程式,表示有主視窗,也就是具有 GUI 介面的程式

 

3. 程式碼


            listBox1.Items.Clear();

            // 取得本機端上執行中的應用程式
            foreach (Process p in Process.GetProcesses(System.Environment.MachineName))
            {
                if (p.MainWindowHandle != IntPtr.Zero)  // 判斷 MainWindowHandle 為非零值的應用程式,表示有主視窗
                {
                    listBox1.Items.Add(p.ToString());
                }
            }

 

4. 執行結果

image image

 

5. 參考

Environment.MachineName 屬性

Process.GetProcesses 方法 (String)

Process.MainWindowHandle 屬性