using System.Windows.Automation;
...
var processes = Process.GetProcessesByName("msedge");
foreach (var process in processes.Where(x => x.MainWindowHandle != IntPtr.Zero))
{
var elm = AutomationElement.FromHandle(process.MainWindowHandle);
var elmUrlBar = elm?.FindFirst(TreeScope.Subtree, new AndCondition(
new PropertyCondition(AutomationElement.ControlTypeProperty,
ControlType.Edit),
new PropertyCondition(AutomationElement.ClassNameProperty,
"OmniboxViewViews")));
if (elmUrlBar != null)
{
elmUrlBar.SetFocus(); // Focus
var urlPattern =
elmUrlBar.GetCurrentPattern(ValuePattern.Pattern) as ValuePattern;
var url = urlPattern.Current.Value; // Get URL
Debug.WriteLine(url);
urlPattern.SetValue("google.com"); // Set URL
}
}
해당 부분은 우리가 일반적인 API로 제어할 수 있는 컨트롤 영역이 아니라 웹페이지 영역입니다.
구글 웹사이트(혹은 웹페이지)의 검색 영역인 것이죠.
자바스크립트로 제어할 수 있지만 msedge 프로세스에 직접 접근해서 제어하는 것은 쉽지 않을 것 같습니다.
주소창에 키워드를 입력해도 검색창에 입력한 것과 동일한 결과를 낼텐데 그렇게 하지 않는 이유가 있을신가요?
이 경우 꼭 외부에 실행된 msedge프로세스를 사용하지 않아도 된다면 WPF나 WinForms의 WebView2 컨트롤을 사용하시는 방법도 있습니다.