我有一个有两个不同句柄的进程。我想根据他们的句柄 ID 关闭一个或另一个。有没有办法在 c# 中做到这一点。
问问题
2874 次
1 回答
0
用这个:
public partial class TestClass {
[DllImport("user32.dll")]
static extern bool EnumWindows(EnumWindowsProc lpEnumFunc, IntPtr lParam);
public delegate bool EnumWindowsProc(IntPtr hwnd, IntPtr lParam);
public static void TestMethod() {
var targetName="AcroRd32.exe";
var processArray=(
from process in Process.GetProcesses()
let moduleName=(new Func<Process, String>(x => {
try {
return x.MainModule.ModuleName;
}
catch(Win32Exception e) {
return default(String);
}
}))(process)
where null!=moduleName
where 0==String.Compare(targetName, moduleName, true)
select process).ToArray();
EnumWindows(
(hwnd, lParam) => {
foreach(var process in processArray)
if(process.MainWindowHandle==hwnd)
return !process.CloseMainWindow();
return true;
},
IntPtr.Zero
);
}
}
于 2013-04-06T04:25:13.230 回答