■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);
}
}
}
}
|
|