close

要判斷執行中的程式,最方便的方式是用System.Diagnostics.Process

ex:
using System.Diagnostics;

Process[] process = Process.GetProcessesByName("EXCEL");
if(process.Length > 0){
    Log("Have been working in Background! Please try again later.");
}

但是VS2003用 Process ,在某些系統上會出現奇怪的 Couldn't get process information from remote machine 錯誤,微軟說是BUG,請改用VS2005(媽的),如果你也不幸遇到了,可以改用WMI。

ex:
using System.Management;
ManagementObjectSearcher mo = new ManagementObjectSearcher("SELECT * FROM Win32_Process Where NAME='EXCEL'");
   
if(mo.Get().Count > 0){
    Log("It is calculating.... Please try it later.");
}

WMI也可以列舉所有執行中的程式,以下為範例.

ex:
using System.Management;
ManagementObjectSearcher mo = new ManagementObjectSearcher("SELECT * FROM Win32_Process'");

foreach (ManagementObject obj in mo.Get()) 
    strProgram = obj["Description"].ToString();

arrow
arrow
    全站熱搜

    felixhuang 發表在 痞客邦 留言(0) 人氣()