Как я могу получить диалог поиска элемента управления веб-браузера в C #? - PullRequest
0 голосов
/ 28 января 2019

Я хочу получить диалог поиска (который открывается с помощью элемента управления + F) как объект, чтобы узнать, активен ли он.

Как мне это сделать?

Я прошелвсе параметры управления веб-браузером и ничего не нашли.

1 Ответ

0 голосов
/ 28 января 2019

Ни элемент управления WebBrowser, ни собственный интерфейс IWebBrowser2 не предоставляют диалоговое окно поиска.Единственное взаимодействие - запуск диалога путем вызова команды OLE:

SHDocVw.WebBrowser webBrowserInstance = webBrowser1.ActiveXInstance as SHDocVw.WebBrowser;
webBrowserInstance.ExecWB(
                    SHDocVw.OLECMDID.OLECMDID_FIND,
                    SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT,
                    null, null);

Это работает хорошо, но вы не можете ни передавать переменные, ни получать обратно.К сожалению, диалог поиска не является дочерним окном и не имеет идентифицирующих классов или атрибутов.По сути, вам нужно проверить все окна верхнего уровня, принадлежащие вашему процессу, и выяснить, является ли одно из них рассматриваемым диалогом.Затем вы можете отправить WM_CLOSE в окно, или вызвать CloseWindow, или что-то похожее.

Здесь есть хороший набор функций для поиска окон (верхнего уровня), принадлежащих процессу: Какперечислить все окна, принадлежащие определенному процессу, используя .NET?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...