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