フォーラムの水充填機の技術的なポイント 10.06.2004 |
私はもともと、Webページの編集、メモなどはプログラムのものと同じであり、ハンドルで制御できると思っていましたが、後でハンドルがないことに気付きました! 長い間、数日前に自動QQアプリケーションについての例を見ました。 まず、MSHTMLユニットを使用して参照する必要があります。 コードと分析は次のとおりです。 var hform:ihtmlformelement; hdoc:ihtmldocument2; ホール:IHTMLELEMENTCOLLECTION; Hinput:ihtmlinputelement; IW:iweberowser2; hlen、tmploop:整数; VK:Olevariant; ディスパッチ:IdisPatch; 始める (WebBrowse1)の場合、/// Webページにコンテンツがあることを確認してください。 始める hdoc:= webbrowse1.document as ihtmldocument2; ホール:= hdoc.get_all; hlen:= hall.get_length; ///上記の手順は次のとおりです。ブラウザコントロールのコンテンツをすべての識別子に割り当て、総数を計算します。 ///次の操作は次のとおりです。ユーザー名とパスワードの編集を見つけるための総数をループします。 tmploop:= 0からhlen-1の場合 始める vk:= tmploop; ディスパッチ:= hall.item(vk、0); 成功した場合(dispatch.queryinterface(ihtmlinputelement、hinput))その後 ///この識別子が編集コントロールである場合... begin ///以下の大文字は、さまざまなケースのために判断のエラーを防ぎます! ///以下の「テキスト」は、Webページのコンテンツによって決定されます。つまり、判断を下したい場合は、特定のWebページコードを使用する必要があります。 ///パスワードボックスとユーザー名は同じです! 大文字(hinput.type _)= 'text'の場合、hinput.value:= 'tress' それ以外の場合は、appercase(hinput.type _)= 'password' then hinput.value:= 'tress'; 終わり; 成功した場合(dispatch.queryinterface(ihtmlformelement、hform))and(appercase(hform.name)= 'theform')then ///これはフォームの提出物です。 ///名前属性を判断する必要はありませんが、他の属性に基づいて判断することもできます。 hform.submit; 終了; /// 終了します。 終わり; この時点で、自動ログインの例がありますもちろん、単一の選択肢など、ここで他のものに変更することもできます。MSHTMLのリストを確認できます。 ここでは、フォーラムにフレームワークがあることがわかりました。 上記のコードに追加できます。 var ...... ...... IW:iweberowser2; 始める ..... IW:= getFrame(3); ///後続の操作は同じです。つまり、上記の操作の機能は、フレームワーク内のコンテンツをWebページとして処理することです。 hdoc:= iw.document as ihtmldocument2; ホール:= hdoc.get_all; ...... ...... /// getFrame()関数は次のとおりであり、使用にActiveXユニットを追加する必要があります。 関数tfrmain.getframe(frameno:integer):iwebbrowser2; var olecontainer:iolecontainer; 列挙:ienumunknown; UNK:iunknown; フェッチ:Plongint; 始める while while while whiled.readystate <> readystate_completeは行います application.processmessages; 割り当てられた場合(webrowse.document) 始める フェッチ:= nil; olecontainer:= webbrowse.document as iolecontainer; olecontainer.enumobjects(olecontf_embeddings、enum); enum.skip(frameno); enum.next(olecontf_embeddings、unk、fetched); 結果:= unk as iwebbrowser2; 終わり それ以外 結果:= nil; 終わり; 説明するもう1つのポイントは、Webページのフレームのジャンプですが、2つのパラメーターが必要です。 webbrowse.navigae(「転送されるWebアドレス」、flag1、flag2); 2つのパラメーターには次のタイプがあります。 最初のパラメーターは割り当てを必要とせず、Webページを開くための他のオプションを制御します(新しいWebページなど:など)。 操作したいのは、2番目のパラメーターですフレームでWebページを開きます! このようにして、タイマーと一部のコードを追加すると、完全な水充填機を作成できます! |