我刚刚下载了这个开源程序:
http://fabi.me/tools/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;
}
所以Button应该只是冻结过程而不询问哪个...
希望它可以理解。我刚开始使用C#,它与C ++有点不同
答案 0 :(得分:0)
文件名映射的过程是一对一的关系(例如,考虑两个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
}
所以基本上根据你的文件名过滤进程列表。