我有一个有两个不同句柄的进程。我想根据其句柄ID关闭其中一个或另一个。有没有办法在c#中执行此操作。
答案 0 :(得分: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
);
}
}