/// <summary>
/// 指定文字が含まれたEdgeウィンドウを監視して、URLを取得する
/// </summary>
/// <param name="sTitle"></param>
/// <returns></returns>
private static string MonitorEdgeWindowsForUrl(string sTitle = "127.0.0.1")
{
using var automation = new UIA3Automation();
string foundUrl = null;
while (foundUrl == null)
{
try
{
// "msedge" プロセス名を持つすべてのプロセスを取得
var edgeProcesses = Process.GetProcessesByName("msedge");
// msedge プロセスが存在しない場合、"" を返す
if (edgeProcesses.Length == 0)
{
return "";
}
foreach (var process in edgeProcesses)
{
if (process.MainWindowHandle != IntPtr.Zero)
{
var windowElement = automation.FromHandle(process.MainWindowHandle);
// ウィンドウタイトルに 指定文字列 が含まれているか確認
if (windowElement.Name.Contains(sTitle))
{
// アドレスバーを取得
var addressBar = windowElement.FindFirstDescendant(cf => cf.ByControlType(ControlType.Edit));
if (addressBar != null)
{
foundUrl = addressBar.AsTextBox().Text;
Console.WriteLine($"URL: {foundUrl}");
}
else
{
Console.WriteLine("アドレスバーが見つかりませんでした。");
}
// ウィンドウを閉じる
windowElement.AsWindow().Close();
// ループ抜ける
break;
}
}
}
}
catch (Exception ex)
{
Console.WriteLine($"Error processing window: {ex.Message}");
}
// Wait for a short duration before checking again
System.Threading.Thread.Sleep(100);
}
return foundUrl;