0

2 つの異なるハンドルを持つプロセスがあります。ハンドル ID に基づいて、どちらか一方を閉じたいと思います。C# でこれを行う方法はありますか。

4

1 に答える 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 に答える