Puntos técnicos de la máquina de llenado de agua del foro 10.06.2004 |
Originalmente pensé que editar, memo, etc. en la página web son los mismos que en el programa y se pueden controlar con manijas, ¡pero luego me di cuenta de que no hay mango! Después de verificar durante mucho tiempo, vi un ejemplo sobre la aplicación QQ automática hace unos días. Primero, debe hacer referencia a la unidad MSHTML en usos. El código y el análisis son los siguientes: varilla hform: ihtmlFormeLement; HDOC: ihtmlDocument2; Hall: ihtmlelementCollection; Hinput: ihtmlinputelement; IW: iWebrowser2; hlen, tmploop: entero; VK: Olevariant; despacho: idsispatch; Comenzar Si se le asigna (WebBrowse1) entonces /// asegúrese de que haya contenido en la página web; Comenzar HDOC: = WebBrowse1.Document como ihtmlDocument2; Hall: = hdoc.get_all; hlen: = hall.get_length; /// Los pasos anteriores son: asignar el contenido en el control del navegador a HDOC. /// La siguiente operación es: recorrer el número total para encontrar la edición del nombre de usuario y la contraseña; para tmploop: = 0 a hlen-1 do Comenzar vk: = tmPloop; despacho: = hall.item (vk, 0); Si se sucede (Dispatch.QueryInterface (ihtmlinputelement, hinput)) entonces /// Si este identificador es un control de edición ... ¡Comienza /// se requiere el nivel superior a continuación! /// El "texto" a continuación está determinado por el contenido en la página web. /// ¡El cuadro de contraseña y el nombre de usuario son los mismos! Si uppercase (hinput.type _) = 'text' entonces hinput.value: = 'tress' más si uppercase (hinput.type _) = 'contraseña' entonces hinput.value: = 'tress'; fin; Si se sucede (Dispatch.QueryInterface (IHTMLFORMEMENT, HFORM)) y (UPPERSAS (HFORM.NAME) = 'THEFORM') ENTONCES /// Esta es la presentación del formulario. /// y no es necesario juzgar el atributo de nombre, pero también se puede juzgar en función de otros atributos. Hform.submit; fin; fin; fin; En este punto, un ejemplo de inicio de sesión automático está listo. Valores; por supuesto, también puede cambiarlo a otras cosas aquí, como la elección única, etc. Para contenido específico, ¡puede consultar la lista en MSHTML! Fue suficiente aquí. Puede agregarlo al código anterior: varilla ...... ...... IW: iWebrowser2; Comenzar ..... IW: = GetFrame (3); /// Las operaciones posteriores son las mismas, es decir, la función de las operaciones anteriores es procesar el contenido en un marco como página web; hdoc: = iw.document como ihtmlDocument2; Hall: = hdoc.get_all; ...... ...... /// La función getFrame () es la siguiente y necesita agregar unidades ActiveX a los usos: Función tfrmain.getFrame (frameno: entero): iwebbrowser2; varilla Olecontainer: Iolecontainer; Enum: Ienumunknown; Unk: Iunknown; Recuperado: Plongint; Comenzar mientras que webbrowse1.readyState <> ReadyState_Complete DO Aplicación. ProcessMessages; si se asigna (webrowse.document) entonces Comenzar Obtenido: = nulo; OleContainer: = webbrowse.document como iolecontainer; OleContainer.enumObjects (oleContf_embeddings, enum); Enum.skip (frameno); Enum.next (olecontf_embeddings, unk, obtenido); Resultado: = unk como iwebbrowser2; fin demás Resultado: = nil; fin; ¡Otro punto a explicar es que el salto del marco en la página web todavía se usa, pero requiere dos parámetros! webbrowse.navigae ('La dirección web a ser transferida', Flag1, Flag2); Los dos parámetros tienen el tipo: olevariante; El primer parámetro no requiere asignación, controla otras opciones para abrir la página web (como: abrir en una nueva página web, etc.). ¡Lo que queremos operar es el segundo parámetro. ¡Abra una página web en un marco! De esta manera, agregar un temporizador y algún código puede hacer una máquina de llenado de agua completa. |