2 つの異なるハンドルを持つプロセスがあります。ハンドル 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 に答える