2014-01-16 81 views
0

我剛剛下載了這個開源程序:
http://fabi.me/tools/processfreezer/
我想修改一些東西。但我真的不知道如何......將列表更改爲按鈕? (modify ProcessFreezer)

這個程序允許你凍結一個進程。您通過列表框選擇過程。 但我只想凍結一個特定的程序,這是一個字符串手動給出的。

例如:

string process = "C:\\Program Files (x86)\\yolo\\yolo.exe"; 

我如何可以覆蓋列表框,並給該信息的暫停功能?

下面的代碼

Process[] GetCheckedProcesses() 
{ 
    Process[] procs = new Process[lvProcesses.CheckedItems.Count]; 
    for (int i = 0; i < procs.Length; i++) 
     procs[i] = (Process)lvProcesses.CheckedItems[i].Tag; 

    return procs; 
} 

private void btnSuspend_Click(object sender, EventArgs e) 
{ 
    Process[] procs = GetCheckedProcesses(); 

    for (int i = 0; i < procs.Length; i++) 
    { 
     try { ProcessFreezer.SuspendProcess(procs[i]); ; } 
     catch (Exception ex) { MessageBox.Show(ex.ToString(), "FEHLER"); } 
    } 
} 

這裏的ProcessIsSuspend

public static bool ProcessIsSuspended(Process proc) 
{ 
    bool suspended = true; 
    foreach (ProcessThread pT in proc.Threads) 
     suspended &= ( pT.ThreadState == System.Diagnostics.ThreadState.Wait 
         && pT.WaitReason == ThreadWaitReason.Suspended ); 
    return suspended; 
} 

使按鍵應該只是凍結過程中的一個片段,而不要求其...
希望其可以理解的。我剛剛開始使用C#,它與C++稍有不同

+0

到目前爲止您嘗試了什麼(如果有的話)?問題究竟在哪裏?你告訴我們你正在試圖解決的問題,但不是你這樣做的問題。 – Chris

+0

問題是,我不明白我如何更改帶有許多項目的列表框到只有一個項目f.x的按鈕。 chrome.exe。我只想點擊按鈕,程序應該凍結chrome.exe。我不想要顯示列出每個進程列表的選項:/我真的沒有得到它:( – user3202845

回答

0

文件名映射過程是n對1關係(例如,考慮Visual Studio的兩個實例)。

爲了找到基於文件名的過程,你可以使用「主模塊」的文件:

Process proc; 
try 
{ 
    string fileName = proc.MainModule.FileName 
    //check if the file matches what you are looking for. 

} 
catch (Win32Exception e) 
{ 
    //some processes are protected, you 
    //will not be allowed to access the file name 
    //even as an administrator 
} 

所以基本上篩選的基礎上的文件名的進程列表。

+0

我怎麼能過濾這樣的事情? – user3202845

+0

http://stackoverflow.com/questions/26196/filtering-collections -in-C-尖銳 – Bas