記得曾經用過WMI來列舉執行中的程式[VB6] 利用WMI列舉目前正在執行中的程式,而.NET Framework提供的 System.Diagnostics 命名空間的 Process 類別中的GetProcess方法,也能達到相同的功能。

Process 類別:提供對本機和遠端處理序 (Process) 的存取,並讓您能夠啟動和停止本機系統處理序。

1.使用GetProcesses 方法會傳回Process陣列

2.使用GetProcessById 取得系統上維一的ID並操作

3.Kill方法會不顧一切的終止程式,已被我註解有興趣的可以解開玩看看,要終止(Terminate)時請小心以免系統掛掉。

 

快照-20094186232

如何列舉執行中的應用程式

//1.引用Process類別中的GetProcesses方法,取得執行中的程式
foreach (Process p in Process.GetProcesses())
{
    //引用ListViewItem類別
    ListViewItem item = new ListViewItem(); 
 
    //取得Process內的屬性後,加入至ListViewItem類別
    item.Text = p.ProcessName;
    item.SubItems.Add(p.Id.ToString());
    item.SubItems.Add((p.PrivateMemorySize64 / 1024) + " Kbyte");
    item.SubItems.Add((p.VirtualMemorySize / 1024) + " Kbyte");
    //加入控制項
    ListView1.Items.Add(item);
}



 


如何取得應用程式ID,並終止


Process proc = Process.GetProcessById(Convert.ToInt32(ListView1.SelectedItems[0].SubItems[1].Text));
try
{ 
 
    ////判斷執程式是否已中止
    if (!proc.HasExited)
    {
        //關閉應用程式
        proc.CloseMainWindow();
        //等待關閉
        proc.WaitForExit();
        //釋放資源
        proc.Close();
    }
    else
        MessageBox.Show("已結束");
}
catch
{
    MessageBox.Show("無法結束!!");
}



 


如何呼叫外部執行檔


//ProcessStartInfo info = new ProcessStartInfo(@"C:\windows\system32\notepad.exe");
//Process.Start(info);
//呼叫外部程式
Process.Start(@"C:\windows\system32\notepad.exe");
//重繪
button1.PerformClick();



 


如何列出包含的模組


if (p.Length > 0) listBox1.Items.Clear();
{
    try
    {
        //列出應用程式包含的模組
        foreach (ProcessModule m in p[0].Modules)
        {
            listBox1.Items.Add("ModuleName: " + m.ModuleName + "\t" + " , " + "FileName: " + m.FileName);
            //listBox1.Items.Add(m.FileVersionInfo);
        }
    }
    catch
    {
    }
}






 


範例下載:


CS_Process.rar


VB_Process.rar

arrow
arrow
    全站熱搜

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