2017-03-08 69 views
0

這裏是如何獲得Windows的運行的應用程序不是所有的過程

Process[] process = Process.GetProcesses(); 

Console.WriteLine("System Running Process \n\n"); 

foreach (Process Proc in process) 
{ 
    if (!string.IsNullOrEmpty(Proc.MainWindowTitle)) 
    { 
     IntPtr wHnd = Proc.MainWindowHandle; 

     Console.WriteLine("Process Name {0} : status {1}", Proc.ProcessName, !IsIconic(wHnd)); 
     //ShowWindowAsync(wHnd, SW_RESTORE); 


     //SetForegroundWindow(wHnd); 
     Console.WriteLine("--------------------"); 
     // Console.WriteLine(Proc.ProcessName); 
    } 
} 

代碼紅色標記的應用程序的輸出也不會使用,但在研究背景進程中運行,並顯示

enter image description here

代碼

這實際上是我想要的輸出

enter image description here

+0

檢查[this](http://stackoverflow.com/questions/35813376/how-do-i-check-if-a-running-process-is-a-background-process)。 – Berkay

回答

0

可以使用的Proc.MainModule.FileVersionInfo.ProductName代替Proc.ProcessName

Console.WriteLine("Process Name {0} : status {1}", 
        Proc.MainModule.FileVersionInfo.ProductName, 
        !IsIconic(wHnd)); 

編輯:順便說一句,如果你需要的標題,你也可以使用Proc.MainWindowTitle

+0

無法保證文件版本信息中的內容與Windows標題欄或任務管理器中顯示的內容相匹配 – MickyD

+0

MickyD您是否看到過我使用線程附加的屏幕截圖?下面的代碼?在此先感謝我想要的輸出和您的代碼行是給不同的名稱相同的結果 –

0

如果你想找到只顯示有窗戶的過程,您應該檢查Process.MainWindowHandle以確保它不是IntPtr.Zero

foreach (Process Proc in process.Where(p => p.MainWindowHandle != IntPtr.Zero)) 
{ 
    ... 
相關問題