[Delphi:91003] TWebBrowserのDocumentCompleteに関して

262 views
Skip to first unread message

Sakamoto Takao

unread,
Dec 25, 2008, 5:18:56 PM12/25/08
to Del...@ml.users.gr.jp
坂本と申します。

以下のことを実現しようとしています。(Delphi7Ent)

①webのログイン画面に対して外部から3つのデータを入力し
 ログインボタンを押す

②画面が切り替わったら実行ボタンを押す

---
①は関連サイトを参考に以下のコードで難なく実現できましたが、
②の切り替わった画面をどのように拾うのか書き方が分かりません。

参照先で構いませんのでご教示願えればありがたいです。
よろしくお願い申し上げます。

---
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms, Dialogs, MSHTML, OleCtrls, SHDocVw, StdCtrls;

type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
Button1: TButton;
procedure WebBrowser1DocumentComplete(Sender:TObject;
const pDisp: IDispatch; var URL:OleVariant);
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;

var
Form1: TForm1;
isNavigate : Boolean;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate('サイトアドレス');
isNavigate := True;
end;

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
HTMLDoc2 : iHTMLDocument2;
HTMLInputElement : iHTMLInputElement;
//HTMLInputImageEvent : HTMLInputImageEvents;

begin
if isNavigate = True then

begin
HTMLdoc2 := Webbrowser1.document as iHTMLDocument2;
HTMLInputElement := HTMLDoc2.All.Item('GID','') as iHTMLInputElement;
HTMLInputElement.Set_Value ('グループID');

HTMLdoc2 := Webbrowser1.document as iHTMLDocument2;
HTMLInputElement := HTMLDoc2.All.Item('LID','') as iHTMLInputElement;
HTMLInputElement.Set_Value ('社員ID');

HTMLdoc2 := Webbrowser1.document as iHTMLDocument2;
HTMLInputElement := HTMLDoc2.All.Item('PASS','') as iHTMLInputElement;
HTMLInputElement.Set_Value ('パスワード');

HTMLdoc2 := Webbrowser1.document as iHTMLDocument2;
HTMLInputElement := HTMLDoc2.All.Item('logon','') as iHTMLInputElement;
HTMLInputElement.Form.Submit;

end;

isNavigate := False;

end;
end.

戸田 英夫

unread,
Jan 5, 2009, 11:23:13 PM1/5/09
to Del...@ml.users.gr.jp
戸田です、解決したかもしれませんが

----- Original Message -----
送信者 : "Sakamoto Takao" <takao.sa...@kyocera.jp>
宛先 : <Del...@ml.users.gr.jp>
送信日時 : 2008年12月26日 7:18
件名 : [Delphi:91003] TWebBrowserのDocumentCompleteに関して


> 参照先で構いませんのでご教示願えればありがたいです。
> よろしくお願い申し上げます。

過去ログで
> [Delphi-ML:24201] TWebBrowserのOnDocumentComplete
ってのが残ってます。

過去ログは武内さんの
http://www2.big.or.jp/~osamu/Delphi/index.html


TwebBrowser のことなら由木尾さんの蛸薬師倶楽部など如何でしょう。
http://www33.ocn.ne.jp/~takoyakusi/

---- (^_^)(^_^)(^_^) THE REAL PROGRAMMER (^_^)(^_^)(^_^) ----
At the beach, The Real Programmer is the one drawing flowcharts in the sand.
戸田 英夫 mailto:to...@384.jp;hideo...@chugoku.ntt-neo.co.jp


大津修一

unread,
Jan 7, 2009, 5:34:58 AM1/7/09
to Del...@ml.users.gr.jp
2日にお送りしたのですが、サーバに到着しなかったのでしょうか。再送してみ
ます。

Forwarded by 大津修一 <oh...@digipub-net.com>
----------------------- Original Message -----------------------
From: 大津修一 <oh...@digipub-net.com>
To: Del...@ml.users.gr.jp
Date: Fri, 02 Jan 2009 18:57:03 +0900
Subject: Re: [Delphi:91003] TWebBrowserのDocumentCompleteに関して
----

大津です。

レスポンスが無いようなので、ASP.NETをベースにご参考程度にコメントさせて
いただきます。

ASP.NETの場合(その他ほとんどの場合そうであると思いますが)、サーバ側で
認証済みであるか否かを確認し、ログイン画面を表示するかを決定します。

したがって、例えば

http://www.sample.com/

というアドレスにアクセスした場合、

○未認証 → http://www.sample.com/login.aspx
○ログインエラー → http://www.sample.com/error.aspx
○認証OK → http://www.sample.com/default.aspx

というようにサーバ側で自動的にリダイレクトします。この設定はASP.NETの場
合、サーバのweb.configなどで行います。

したがって、仮にTWebBrowserでリダイレクトされる前のアドレスにアクセスさ
れているのでしたら、ログイン画面が表示された段階で、カレントのURLが当初
のアクセス先から変化しているような気がします。ログイン後も同様です。


On Fri, 26 Dec 2008 07:18:56 +0900
Sakamoto Takao <takao.sa...@kyocera.jp> wrote:

> 坂本と申します。
>
> 以下のことを実現しようとしています。(Delphi7Ent)
>
> ①webのログイン画面に対して外部から3つのデータを入力し
>  ログインボタンを押す
>
> ②画面が切り替わったら実行ボタンを押す
>
> ---
> ①は関連サイトを参考に以下のコードで難なく実現できましたが、
> ②の切り替わった画面をどのように拾うのか書き方が分かりません。
>
> 参照先で構いませんのでご教示願えればありがたいです。
> よろしくお願い申し上げます。

*************************************
Shuichi Ohtsu
EMAIL: oh...@digipub-net.com
HP : http://www.digipub-net.com/
*************************************


Delphiに関するドキュメント補完サイト:
http://www.digipub.biz/11/ap/Book/DelphiSpace/pDelphiSpace.aspx

ECO(Enterprise Core Object)に関するドキュメント補完サイト:
http://www.digipub.biz/11/ap/Book/Eco/pEcoSpace.aspx

--------------------- Original Message Ends --------------------

*************************************
ダイナミック電子出版のDigiPub Corp.
 <DigiPub (Dynamic Digital Publishing) will exceed Amazon.com>

(株)デジパブ・ジャパン
   DigiPub Japan

代表取締役
  大津 修一
Shuichi Ohtsu

EMAIL: oh...@digipub-net.com
Mobile:090-3903-9499
HP : http://www.digipub-net.com/


*************************************

PS.
データベースでホームページを作成するCMSソフトWebPageMaker
現在好評販売中です。
http://www.digipub.biz/20Wpm/

数十台のパソコンの同時制御を可能にしたソフトGrape Education
現在好評販売中です。
http://www.jnc.ne.jp/grape/

Delphiに関するドキュメント補完サイト:
http://www.digipub.biz/11/ap/Book/DelphiSpace/pDelphiSpace.aspx

ECO(Enterprise Core Object)に関するドキュメント補完サイト:
http://www.digipub.biz/11/ap/Book/Eco/pEcoSpace.aspx


Sakamoto Takao

unread,
Jan 7, 2009, 6:21:40 AM1/7/09
to Del...@ml.users.gr.jp
坂本です。

大津さん、ありがとうございます。

○未認証 → http://www.sample.com/xxx/
○認証OK → http://www.sample.com/xxx/020010.asp?Loading=2

URLは上記のように変化しています。

ログイン画面(http://www.sample.com/xxx/)にデータ2個を入力して
ログインボタンを外部から押すことは出来ており、次の画面も正しく
表示されています。

更に次の画面(http://www.sample.com/xxx/020010.asp?Loading=2)に
ある別のボタンを外部から押したいと考えています。

ログイン画面(http://www.sample.com/xxx/)が表示されたことは、


procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);

で拾うことが出来ました。

次の画面(http://www.sample.com/xxx/020010.asp?Loading=2)が表示
されたイベントをどうやって拾えばよいのか分からないで困っています。


以上、よろしくお願い申し上げます。

大津修一

unread,
Jan 7, 2009, 7:42:41 AM1/7/09
to Del...@ml.users.gr.jp
大津です。

> ログイン画面(http://www.sample.com/xxx/)にデータ2個を入力して
> ログインボタンを外部から押すことは出来ており、次の画面も正しく
> 表示されています。
>
> 更に次の画面(http://www.sample.com/xxx/020010.asp?Loading=2)に
> ある別のボタンを外部から押したいと考えています。

> 次の画面(http://www.sample.com/xxx/020010.asp?Loading=2)が表示
> されたイベントをどうやって拾えばよいのか分からないで困っています。

Submitした後、若干Sleepし、CurrentUrlを比較されたらいかがでしょうか。

Reply all
Reply to author
Forward
0 new messages