C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 153 を表示中)
■88494 / )  Re[1]: 任意のエクスプローラ(フォルダ)を閉じたい
□投稿者/ 魔界の仮面弁士 (1808回)-(2018/09/04(Tue) 07:14:57)
No88492 (Ante さん) に返信
> C#で任意のエクスプローラ(フォルダ)を閉じたいです。

Quit メソッドではどうでしょうか?


using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Runtime.InteropServices;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            List<dynamic> explorers = new List<dynamic>();
            {
                dynamic exp = Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("{9BA05972-F6A8-11CF-A442-00A0C90A8F39}")));
                System.Runtime.InteropServices.ComTypes.IEnumVARIANT f = exp._NewEnum;
                object[] varRes = new object[1];
                while (f.Next(1, varRes, IntPtr.Zero) == 0)
                {
                    dynamic w = varRes[0];
                    if (w != null)
                    {
                        if (Path.GetFileName(w.FullName).ToLowerInvariant() == "explorer.exe")
                        {
                            // Windows Explorer だった場合
                            explorers.Add(w);
                        }
                        else
                        {
                            // Internet Explorer だった場合
                            Marshal.ReleaseComObject(w);
                        }
                    }
                }
                // COM オブジェクトの処分
                Marshal.ReleaseComObject(f);
                Marshal.ReleaseComObject(exp);
            }


            foreach (var w in explorers)
            {
                // 閉じるべきウィンドウかどうかの判定材料
                Console.Write("Handle:");
                Console.WriteLine(w.HWND);
                Console.Write("Position:");
                Console.WriteLine(new Rectangle(w.Left, w.Top, w.Width, w.Height));
                Console.Write("Location:");
                Console.WriteLine(w.LocationName);
                Console.WriteLine(w.LocationURL);

                // 終了させる
                w.Quit();
                Console.WriteLine("-------------");

                // Quit の実行有無によらず、COM オブジェクトの処分は必要
                Marshal.ReleaseComObject(w);
            }
        }
    }
}

返信 編集キー/


管理者用

- Child Tree -