Points techniques de la machine à remplissage d'eau du forum 10.06.2004 |
Je pensais à l'origine que l'édition, la note de service, etc. Dans la page Web sont les mêmes que celles du programme et peuvent être contrôlées avec des poignées, mais plus tard j'ai réalisé qu'il n'y avait pas de poignée! Après avoir vérifié longtemps, j'ai vu un exemple sur l'application QQ automatique il y a quelques jours. Tout d'abord, vous devez référencer l'unité MSHTML dans les utilisations. Le code et l'analyse sont les suivants: var hform: ihtmlformElement; HDOC: ihtmlDocument2; Hall: ihtmlelementCollection; Hinput: ihtmlinPutElement; IW: iwebrowser2; Hlen, tmplop: entier; VK: Olevariant; Dispatch: iDispatch; Commencer Si cela est attribué (webbrowse1) alors /// assurez-vous qu'il y a du contenu dans la page Web; Commencer hdoc: = webbrowse1.Document as ihtmlDocument2; hall: = hdoc.get_all; hlen: = hall.get_length; //// Les étapes ci-dessus sont les suivantes: Attribuez le contenu dans le contrôle du navigateur à HDOC. //// L'opération suivante est: Loop via le nombre total pour trouver la modification du nom d'utilisateur et du mot de passe; et attribuez une valeur; pour tmplop: = 0 à hlen-1 do Commencer vk: = tmplop; répartition: = hall.item (vk, 0); Si réussi (Dispatch.QueryInterface (ihtmlinPutellement, hinput)) puis /// si cet identifiant est un contrôle d'édition ... Début //// La majuscule ci-dessous est requise! Empêcher les erreurs de jugement en raison de différents cas! /// Le "texte" ci-dessous est déterminé par le contenu de la page Web. /// La boîte de mot de passe et le nom d'utilisateur sont les mêmes! Si majuscule (hinput.type _) = 'texte' alors hinput.value: = 'tress' sinon si uppercase (hinput.type _) = 'mot de passe' alors hinput.value: = 'tress'; fin; Si succédé (Dispatch.QueryInterface (ihtmlFormElement, hform)) et (uppercase (hform.name) = 'theform') puis /// c'est la soumission de formulaire. /// et il n'est pas nécessaire de juger l'attribut de nom, mais il peut également être jugé sur la base d'autres attributs. Hform.submit; fin; fin; fin; À ce stade, un exemple de connexion automatique est prêt. Valeurs; bien sûr, vous pouvez également le modifier par d'autres choses ici, comme le seul choix, etc. Pour un contenu spécifique, vous pouvez vérifier la liste dans MSHTML! Cela a été suffisant ici. Vous pouvez l'ajouter au code ci-dessus: var ...... ...... IW: iwebrowser2; Commencer ..... iw: = getFrame (3); /// Les opérations suivantes sont les mêmes, c'est-à-dire que la fonction des opérations ci-dessus est de traiter le contenu dans un cadre en tant que page Web; hdoc: = iw.Document as ihtmlDocument2; hall: = hdoc.get_all; ...... ...... /// La fonction getFrame () est la suivante et doit ajouter des unités ActiveX aux utilisations: Fonction tfrmain.getFrame (Frameno: Integer): iwebBrowser2; var OleContainer: IoleContainer; Enum: ienumunknown; unk: iunknown; Recherché: Plongint; Commencer tandis que webbrowse1.readystate <> readystate_complete do application.ProcessMessages; si elle est affectée (webrowse.Document) alors Commencer Récupéré: = nil; OleContainer: = webbrowse.Document as ioleContainer; OleContainer.EnumObjects (OleContf_embeddings, Enum); Enum.skip (Frameno); Enum.next (oleContf_embeddings, unk, récupéré); Résultat: = unk comme iwebbrowser2; fin autre Résultat: = nil; fin; Un autre point à expliquer est le saut du cadre de la page Web! webbrowse.navigae («l'adresse Web à transférer», Flag1, Flag2); Les deux paramètres ont le type: olevariant; Le premier paramètre ne nécessite pas d'attribution, il contrôle d'autres options pour ouvrir la page Web (telles que: l'ouverture dans une nouvelle page Web, etc.). Ce que nous voulons utiliser est le deuxième paramètre. Ouvrez une page Web dans un cadre! De cette façon, l'ajout d'une minuterie et d'un code peut faire une machine à remplissage d'eau complète! |