Технические моменты машины для наполнения водного форума 10.06.2004 |
Первоначально я думал, что редактирование, память и т. Д. На веб -странице такие же, как и в программе, и его можно контролировать с помощью ручек, но позже я понял, что нет ручки! Проверяясь в течение долгого времени, я видел пример автоматического приложения QQ несколько дней назад. Во -первых, вам нужно ссылаться на блок MSHTML в использовании. Код и анализ следующие: вар hform: ihtmlformelement; HDOC: Ihtmldocument2; Зал: IhtmlelementCollection; Hinput: ihtmlinputelement; IW: iwebrowser2; hlen, tmploop: целое число; VK: Olevariant; Отправка: Idispatch; Начинать Если назначено (WebBrowse1), то /// Убедитесь, что на веб -странице есть контент; Начинать hdoc: = webbrowse1.document как ihtmldocument2; Зал: = hdoc.get_all; hlen: = hall.get_length; //// Приведенные выше шаги: назначить контент в управлении браузером HDOC. //// Следующая операция: цикл через общее число, чтобы найти редактирование имени пользователя и пароля; для tmploop: = 0 до hlen-1 do Начинать VK: = tmploop; Dispatch: = Hall.Item (VK, 0); Если преуспеть (Dispatch.QueryInterface (ihtmlinputelement, hinput)) /// Если этот идентификатор является элементом редактирования ... BEGIN //// Требуется прописное заглавное положение! /// «Текст» ниже определяется контентом на веб -странице. /// Ящик для паролей и имя пользователя одинаковы! Если прописное (hinput.type _) = 'text', то hinput.value: = 'tress' иначе, если прописное (hinput.type _) = 'пароль', то hinput.value: = 'tress'; конец; Если преуспеть (dispatch.queryInterface (ihtmlformelement, hform)) и (uppercare (hform.name) = 'theform') тогда /// Это подчинение формы. /// И нет необходимости судить об атрибуте имени, но его также можно судить на основе других атрибутов. Hform.submit; конец; конец; конец; На этом этапе пример автоматического входа готов Значения; Это было достаточно здесь. Вы можете добавить его в приведенный выше код: вар ...... ...... IW: iwebrowser2; Начинать ..... iw: = getFrame (3); /// Последующие операции одинаковы, то есть функция вышеуказанных операций заключается в обработке контента в структуре в качестве веб -страницы; hdoc: = iw.document как ihtmldocument2; Зал: = hdoc.get_all; ...... ...... /// Функция getFrame () выглядит следующим образом и необходимо добавить единицы ActiveX в использование: Function tfrmain.getFrame (Frameno: Integer): iwebbrowser2; вар Olecontainer: iolecontainer; enum: ienumunknown; UNK: iunknown; Выбрало: Plongint; Начинать в то время как webbrowse1.readystate <> readystate_complete do Application.ProcessMessages; Если назначено (webrowse.document), то Начинать Извлечено: = nil; Olecontainer: = webbrowse.document как iolecontainer; Olecontainer.enumobjects (olecontf_embeddings, enum); Enum.skip (Frameno); Enum.next (olecontf_embeddings, unk, извлечен); Результат: = unk как iwebbrowser2; конец еще Результат: = NIL; конец; Еще один момент, который нужно объяснить, - это прыжок кадра на веб -странице! webbrowse.navigae («веб -адрес, который должен быть передан», flag1, flag2); Два параметра имеют тип: Olevariant; Первый параметр не требует назначения, он управляет другими параметрами для открытия веб -страницы (например: открытие на новой веб -странице и т. Д.). То, что мы хотим, - это второй параметр Откройте веб -страницу в кадре! Таким образом, добавление таймера и некоторого кода может сделать полную машину для наполнения воды! |