以下のことを実現しようとしています。(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.
----- 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
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/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
大津さん、ありがとうございます。
○未認証 → 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)が表示
されたイベントをどうやって拾えばよいのか分からないで困っています。
以上、よろしくお願い申し上げます。
> ログイン画面(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を比較されたらいかがでしょうか。