☆TWebBrowserで自動ログイン
フリーメール以外でもWEBからアクセスできるメールサービスが多くあり、ブラウザさえ見れる環境があれば外部からメールのチェックが可能ですよね。今回は、そういったメールに自動ログインして、メーラーとして使えるような処理を考えたいと思います。サンプルでは、コード中にユーザーIDやパスワードを入力していますが、危険なので暗号化し、別ファイルに保存して読み書きするのが便利だと思います。そしてUSBメモリーに入れて持ち歩くと、人のパソコンでも簡単に自分のメーラーにすることができます(^^;キー入力によるパスワード等の盗難?の可能性も減りますし・・・。
私は、簡易な暗号しか作れないので、IDは簡易な暗号化をしてファイルに保存し、パスワードのみ入力するようにしています。現在 @nifty、eo、Hotmail、Gmail、Yahoo Groupをチェックできるようにしています。
まず、フォームにTWebBrowserとTButtonを一つずつ配置します。
そして、ログインするための処理を作成します。
次に自動ログインする処理です。 この処理方法については、どのサイトだったのかわからないのですが、いろいろなサイトを参考にさせてもらっています。名前やアドレスが書けず、ごめんなさい。
最後にログインボタンの処理です。
プログラムにパスワードを書き込んで試した場合、バックアップファイルに残っていたりしますので、ご注意下さい。
私は、簡易な暗号しか作れないので、IDは簡易な暗号化をしてファイルに保存し、パスワードのみ入力するようにしています。現在 @nifty、eo、Hotmail、Gmail、Yahoo Groupをチェックできるようにしています。
まず、フォームにTWebBrowserとTButtonを一つずつ配置します。
そして、ログインするための処理を作成します。
var IsLogin: Boolean; procedure TForm1.Login; var URL: String; begin // Gmailの場合 URL := 'https://www.google.com/accounts/ServiceLogin?'+ 'service=mail&passive=true&rm=false&continue=http%3A%2F%2'+ 'Fmail.google.com%2Fmail%3Fhl%3Dja%26ui%3Dhtml%26zy%3Dl'+ '&l'+'tmpl=cm_tlsosm_t&l'+'tmplcache=2&hl=ja'; UserName := 'xxxxxxx@gmail.com'; // ここにユーザーIDを入力します。 Password := '*******'; // ここにパスワードを入力します。 IsLogin := False; WebBrowser1.Navigate(URL); end;
次に自動ログインする処理です。 この処理方法については、どのサイトだったのかわからないのですが、いろいろなサイトを参考にさせてもらっています。名前やアドレスが書けず、ごめんなさい。
procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant); var iDoc: IHtmlDocument2; I: integer; ov: OleVariant; iDisp: IDispatch; iColl: IHTMLElementCollection; iInputElement: IHTMLInputElement; begin if IsLogin then Exit; WebBrowser1.ControlInterface.Document.QueryInterface(IID_IHTMLDocument, iDoc); if not assigned(iDoc) then Exit; ov := 'INPUT'; IDisp := iDoc.all.tags(ov); if assigned(IDisp) then begin IDisp.QueryInterface(IID_IHTMLElementCollection, iColl); if assigned(iColl) then begin for I := 1 to iColl.Get_length do begin iDisp := iColl.item(pred(I), 0); iDisp.QueryInterface(IID_IHTMLInputElement, iInputElement); if assigned(iInputElement) then begin // username ※iInputElement.nameについては、事前にHTMLを見て調べます。 if (iInputElement.type_='text') and (iInputElement.name='Email') then iInputElement.value:= UserName; // password ※iInputElement.nameについては、事前にHTMLを見て調べます。 if (iInputElement.type_= 'password') and (iInputElement.name='Passwd') then iInputElement.value:= Password; // submit if (iInputElement.type_= 'submit') then begin IsLogin := True; iInputElement.form.submit; end; end; end; end; end; end;
最後にログインボタンの処理です。
procedure TForm1.Button1Click(Sender: TObject); begin Login; end;
プログラムにパスワードを書き込んで試した場合、バックアップファイルに残っていたりしますので、ご注意下さい。
| 固定リンク