マウスカーソルの下にあるウィンドウエクスプローラーのディレクトリパスを取得したい。試してみAutomationElement
ましたが、必要のない名前やプロセスIDなどしか検出しません。私も試しSHDocVw.ShellWindows
てみましたが、うまくいっているようですが、どれが選択されているかを定義できません。
ここに私が試したソースがあります
string GetDropPath(AutomationElement element){
string dir = element.Current.Name;
if (dir.Split('.').Length >= 2) return null;
string desktop = CommonDir["Desktop"];
if (Directory.Exists(desktop + "\\" + dir))
{
dir = desktop + "\\" + dir;
}
else
{
if (CommonDir.ContainsKey(dir))
{
dir = CommonDir[dir];
}
else if (!Directory.Exists(dir))
{
foreach (InternetExplorer item in new SHDocVw.ShellWindows())
{
//uint ppid = 0;
//GetWindowThreadProcessId(item.HWND, out ppid);
if (item.LocationURL.ToString().StartsWith("file:///"))
{
List<int> children = GetAllChildrenWindowHandles(item.HWND, 100);
if (item.HWND == element.Current.NativeWindowHandle || children.Contains(element.Current.NativeWindowHandle))
{
string pth = item.LocationURL.Replace("file:///", "");
if (Directory.Exists(pth + "\\" + dir))
{
dir = pth + "\\" + dir;
}
else
{
dir = pth;
}
break;
}
}
}
}
}
if (Directory.Exists(dir))
{
return dir;
}
else
{
return null;
}
}