Отправка сообщения user32dll на страницу Internet Explorer

#c#

#c#

Вопрос:

У меня на рабочем столе открыта страница Internet Explorer. Название веб-страницы — TEST. С помощью FindWindow() из user32.dll я могу получить обработчик над окном. На этой странице у меня есть кнопка под названием Go и 2 текстовых поля под названием Name и Family1. Как я могу написать на веб-странице свое имя и фамилию, а затем программно нажать Go? СПАСИБО

Ответ №1:

Обычный подход к обновлению внешних окон ( WM_SETTEXT и др.) не будет работать, потому что компоненты формы в IE не являются стандартными окнами, скорее они отображаются самим IE.

Чтобы управлять ими, вам нужно вызвать через DOM (или использовать что-то вроде WaitN).

 using mshtml;  //.net ref microsoft.mshtml
using SHDocVw; //com ref `microsoft internet controls`   change ref to no embed interop 

int HWND = 0x001C0C10; //your IE 
foreach(InternetExplorer ie in new ShellWindowsClass()) {
   //find the instance
   if (ie.HWND == HWND) {
      //get doc
      HTMLDocument doc = (HTMLDocument)ie.Document;
       doc.getElementsByName("name").item(0).value = "bob";
       doc.getElementsByName("surname").item(0).value = "smith";
       doc.getElementsByName("go").item(0).click();
   }
}
  

Ответ №2:

Я не уверен, что ваш запрос действительно возможен с использованием Win32 (user32.dll), сказав, что если вы пытаетесь взаимодействовать с веб-сервером, вы могли бы просто использовать httprequest и httpresponse class для получения и публикации переменных по мере необходимости.

 HttpWebRequest testRequest = (HttpWebRequest)WebRequest.Create("http://.....");
HttpWebResponse testResponse = (HttpWebResponse)testRequest.GetResponse();
string responseStatus = testResponse.StatusCode.ToString();
testResponse.Close();

http://msdn.microsoft.com/en-us/library/system.web.httprequest.aspx
http://msdn.microsoft.com/en-us/library/system.web.httpresponse.aspx
  

Если вы пытаетесь протестировать или ответить на стандартный набор событий, тогда вы можете захотеть взглянуть на Fiddler

 http://www.fiddler2.com/fiddler2/