Pontos técnicos da máquina de enchimento de água do fórum 10.06.2004 |
Originalmente, pensei que editar, memorando etc. Na página da web, eram iguais aos do programa e podem ser controlados com alças, mas depois percebi que não há identificador! Depois de verificar por um longo tempo, vi um exemplo sobre o aplicativo QQ automático há alguns dias. Primeiro, você precisa fazer referência à unidade MSHTML nos usos. O código e a análise são os seguintes: var Hform: ihtmlformElement; HDOC: IHTMLDocument2; Hall: IhtmlelementCollection; Hinput: ihtmlinputElement; iw: iwebrowser2; Hlen, tmploop: Inteiro; VK: Olevariant; Despacho: idispatch; Começar Se atribuído (Webbrowse1), então /// Verifique se há conteúdo na página da web; Começar hdoc: = webbrowse1.document como ihtmldocument2; salão: = hdoc.get_all; hlen: = hall.get_length; //// As etapas acima são: Atribua o conteúdo no controle do navegador ao HDOC. //// A operação a seguir é: LOOP através do número total para encontrar a edição do nome do usuário e da senha; e atribua um valor; para tmploop: = 0 para hlen-1 do Começar vk: = tmplop; despacho: = hall.item (vk, 0); se for sucedido (despacho.QueryInterface (ihtmlinputElement, hinput)) então /// Se este identificador for um controle de edição ... BEGIN //// A maçaneta abaixo é necessária! /// O "texto" abaixo é determinado pelo conteúdo na página da web. /// A caixa de senha e o nome de usuário são os mesmos! Se upcase (hinput.type _) = 'text' então hinput.value: = 'Tress' caso contrário, se uppercase (hinput.type _) = 'senha' então hinput.value: = 'TRESS'; fim; se for sucedido (despacho.QueryInterface (ihtmlformElement, hform)) e (uppercase (hform.name) = 'theform') então /// Este é o envio do formulário. /// e não é necessário julgar o atributo de nome, mas também pode ser julgado com base em outros atributos. Hform.submit; fim; fim; fim; Neste ponto, um exemplo de login automático está pronto valores; Foi o suficiente aqui. Você pode adicioná -lo ao código acima: var ...... ...... iw: iwebrowser2; Começar ..... iw: = getFrame (3); /// As operações subsequentes são as mesmas, ou seja, a função das operações acima é processar o conteúdo em uma estrutura como uma página da web; hdoc: = iw.document como ihtmldocument2; salão: = hdoc.get_all; ...... ...... /// A função getFrame () é a seguinte e precisa adicionar unidades ActiveX aos usos: Function tfrmain.getframe (FRAMENO: INTEGER): iwebbrowser2; var OleContainer: iolecontainer; Enum: ienumunknown; UNK: Iunknown; Buscado: Plongint; Começar enquanto webbrowse1.readyState <> ReadyState_Complete Do Application.processMessages; se atribuído (webrowse.document) então Começar Buscado: = nil; OleContainer: = webbrowse.document como iolecontainer; Olecontainer.enumObjects (olecontf_embeddings, enum); Enum.skip (Frameno); Enum.Next (olecontf_embeddings, unk, buscado); Resultado: = unk como iwebbrowser2; fim outro Resultado: = nil; fim; Outro ponto a ser explicado é o salto do quadro na página da web! webbrowse.navigae ('o endereço da web a ser transferido', Flag1, Flag2); Os dois parâmetros têm o tipo: Olevariant; O primeiro parâmetro não requer atribuição, controla outras opções para abrir a página da web (como: abertura em uma nova página da web etc.). O que deseja operar é o segundo parâmetro Abra uma página da web em um quadro! Dessa forma, adicionar um cronômetro e algum código pode fazer uma máquina completa de enchimento de água! |