[C#]取得本機端上,執行中有 GUI 介面的應用程式
1. 問題描述
取得本機端上,執行中有 GUI 介面的應用程式
2. 方法
主要透過 :
(1) Environment.MachineName 屬性 : 取得這個本機電腦的 NetBIOS 名稱。
範例
MessageBox.Show(System.Environment.MachineName.ToString());
執行結果
(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. 執行結果
5. 參考