-
Здравствуйте! Использую Delphi 2009. Пишу программу, которая по сути является браузером, но после авторизации пользователя на сайтах выдаем ему суммарную информацию из аккаунтов и дает возможность быстрого перехода к нужной информации. В качестве браузера выбрал MozillaBrowser вместо стандартного WebBrowser. И тут все бы хорошо, но не знаю каким образом запоминать введенные пользователем логин и пароль на сайтах? Подскажите пожалуйста!
-
И ещё такой момент. Есть несколько вкладок PageControl на которых размещены MozillaBrowser и при загрузке в них страниц, а происходит она поочередно при первом запуске(сначала грузится сайт в первой вкладке, когда загрузится начинает загружаться второй и так далее). Загрузка проходит нормально, а вот потом происходит что-то странное перейти в браузере на другую страницу или изменить значение CheckBox, ComboBox можно, а вот ввести данные не в одно из текстовых полей нельзя. То есть курсор изменяется на нужный, а в само текстовое поле не ставится и поле не реагирует ни на одну кнопку, но вот выделенный на странице текст можно легко перетащить мышкой в текстовое поле и он там отображается, хоть и удалить его невозможно.
-
Запоминать на сайтах? или где, а сайты чьи?
-
запоминать в программе, то есть когда человек запускает программу в следующий раз ему уже не требуется заново вводить логин и пароль на сайтах, они уже вбиты в соответствующих полях. Сайты чьи? - людей... mail.ru, yandex и т.д.
-
Каким образом запоминать логин и пароль введенный пользователем в MozillaBrowser так и не понял. Пришлось вернуться к стандартному WebBrowser. И использовать:
FillForm(WebBrowser: TWebBrowser; FieldName: string; Value: string): Boolean; var i, j: Integer; FormItem: Variant; begin Result := False; //Формы нет if WebBrowser.OleObject.Document.all.tags('FORM').Length = 0 then begin Exit; end; //Форм в документе for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do begin FormItem := WebBrowser.OleObject.Document.forms.Item(I); for j := 0 to FormItem.Length - 1 do begin try //если найденно изменить. if FormItem.Item(j).Name = FieldName then begin FormItem.Item(j).Value := Value; Result := True; end; except Exit; end; end; end; end;
Текстовые поля недоступны были по причине неверного ReadyState компонента MozillaBrowser.
P.S. Если кто-нибудь знает как запоминать логин и пароль в MozillaBrowser или знает бесплатный компонент не на основе IE подскажите пожалуйста!
-
Анализируй состояние полей <input type="password" , а также прочих полей Формы ( <Form> < / Form> ) в которой находится этот Input при отправке браузером запроса POST
-
> Cobalt
Спасибо.
Сделал ещё проще:
... //переменные var i: Integer; input_text: Variant; begin //изначально значение false Result := False; //находим поля ввода input_text:=Browser.OleObject.document.all.tags('INPUT'); //перебираем поля ввода for i:=0 to input_text.length-1 do //если наше поле, то if input_text.item(i).name=FieldName then //вставляем в него значение input_text.item(i).value:=Value; ...
На тех сайтах которые нужны мне работает. Если что то в коде не так и в дальнейшем могут возникнуть ошибки скажите.
-
> if input_text.item(i).name=FieldName then > //вставляем в него значение > input_text.item(i).value:=Value;
А Value откуда брать?
-
> А Value откуда брать?
я, так понимаю, эта инфа кэшится в файло...
-
> я, так понимаю, эта инфа кэшится в файло...
Ну я так понял что и паролэ в файло... Юзвери имеют полное право не следовать заповедям Заратустры по отношению к автору...
-
смисми
|