Здравствуйте .smoke, Вы писали:
.>Здравствуйте Hacker_Delphi, Вы писали:
HD>>И все-таки самый простой способ, с учетом того, что нужно как можно меньше усилий затратить — это:
HD>>
HD>>Кидаем на форму компонент TWebBrowser
HD>>В событии OnShow формы говорим TWebBrowser.Navigate( <адрес странички> );
HD>>В событии OnNavigateCompleate2 компонента TWebBrowser пишем обработчик заполнения Login формы (ее имя и структуру можно узнать однажды просмотревши ее исходник)
HD>>с помощью интерфейсов MSHTML (конкретно — IHTMLDocument, IHTMLForm, IHTMLElement) можем заполнить логин и пароль и выполнить метод формы submit.
HD>>Hint: тут надо выставить флаг (например — свойство Tag компонента TWebBrowser), индицируя, что мы ужо в режиме login'а.
HD>>после ентого ждем NavigateCompleate и в полученом URL берем ID сессии..
HD>>
.>Большое спасибо! Именно так и сделал — все работает на ура.
.>Только вот еще такой вопрос: Если я сделал
.>WebBrowser1.ControlInterface.Document.QueryInterface(IHtmlDocument2, iDoc);
.>Его потом перед след использованием освобождаь обязательно?
если iDoc — локальная переменная, то не надо — само освободится, а если не локальная — надо обязательно, либо же не инициализировать заново (правда не факт, что оно не изменится за время между вызовами).
Кстати, проще было написать так:
iDoc := WebBrowser.Document as IHTMLDocument2;
по крайней мере, В Delphi 6 именно так.
--- cut here ---
Hint:
В Delphi вместо использования вызова QueryInterface можно писать так:
SomeInterfaceVariable := AnotherInterfaceVariable as SomeInterface;
Delphi все равно откомпилирует как вызов к QueryInterface да еще и с проверкой результата, а читабельность — выше
--- cut here ---
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))