/// <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;