掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
常駐とTWebBrowserについて (ID:10965)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
いつもお世話になっております 自分で作ったソフトに常駐機能を付けたくて http://www.borland.co.jp/qanda/delphi/d0009410.html 上記ページに書かれた内容をそのまま使用した所、作成したソフトの自動で サイトにログインするという機能が動作しなくなってしまいました (常駐無しの場合きちんと動作しています) と言っても動作しなくなるのは 「起動直後から常駐を初めてその後一度も常駐を解除しなかった時」 つまり一度でもウィンドウを表示させてから常駐し直すと動作します また、OnCreateイベントの >procedure TForm1.FormCreate(Sender: TObject); >begin > Application.ShowMainForm := False; > MoveToTaskTray; >end; 「Application.ShowMainForm := False;」という行を削除し、 ウィンドウが表示されてからButton1をクリックして常駐させた場合には 問題なく動作します(上と言ってる事同じ?) 自動でサイトにログインする機能には TWebBrowserのOnDocumentComplete イベントを使っていて、 procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); var hIE:HWND; tmp:OleVariant; begin if LogingIn = true then begin hIE := FindWindowEx(WebBrowser1.Handle,0,'Shell DocObject View',nil); hIE := FindWindowEx(hIE,0,'Internet Explorer_Server',nil); if hIE = 0 then exit; //ID記述 SendMessage(hIE,WM_LBUTTONDOWN,0,MakeLParam(X1,Y1)); SendMessage(hIE,WM_LBUTTONUP,0,MakeLParam(X1,Y1)); Edit1.SelectAll; Edit1.CopyToClipboard; WebBrowser1.ExecWB(OLECMDID_PASTE,OLECMDEXECOPT_DONTPROMPTUSER,tmp,tmp); //Pass記述 SendMessage(hIE,WM_LBUTTONDOWN,0,MakeLParam(X2,Y2)); SendMessage(hIE,WM_LBUTTONUP,0,MakeLParam(X2,Y2)); Edit2.SelectAll; Edit2.CopyToClipboard; WebBrowser1.ExecWB(OLECMDID_PASTE,OLECMDEXECOPT_DONTPROMPTUSER,tmp,tmp); //ログインボタンを押す SendMessage(hIE,WM_LBUTTONDOWN,0,MakeLParam(X3,Y3)); SendMessage(hIE,WM_LBUTTONUP,0,MakeLParam(X3,Y3)); LogingIn := false; end; end; としているのですが、最初から常駐させていてウィンドウを一度も表示していない場合 常駐を解除した直後にこのイベントが実行されているようです。 よって別のURLを開いた後に常駐を解除してもログインできません (Timerを使用して複数のサイトに順番にログイン) 上手く質問をまとめる事ができず、わかり難い文章になってしましました(汗 とりあえずお聞きしたいのは、 ・何故一度常駐を解除(ウィンドウを表示)する必要があるのか ・ウィンドウを表示せずに一度は表示したのと同じ結果を得る方法 です
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.