よろしくお願いします。
WebBrowserでブラウザを作成しています。
よく、ホームページに「印刷」「閉じる」などボタン(リンク)がありますがソースをみると
<a href="javascript:self.print()" class="popuplinks">印刷
<a href="#" onclick="window.close()" class="popuplinks">閉じる
などとなっていますが、この指令を取得するにはどのようにしたらできるでしょうか。(別窓が開く例もありますが)
たとえば例を探すと、FormにWebBrowserを貼り付けて
WebBrowser1.Navigate('http://configure.apj.dell.com/dellstore/config.aspx?c=jp&cs=jpdhs1&l=ja&oc=3046BBasic&s=dhs');
で「内容の確認に進む」ボタンを押すと
次の画面で「印刷」をクリックすると別窓が表示されます。
この別窓についています。
よろしくお願いします。
試してませんがJavaScriptであるならオーバーライドしてその操作を改編可能です。
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=080045
うまくいったらレポートお願いします。
だめそうでしたら、私の方でチェックします。
monaaさん教えていただきありがとうございます。
ただいま奮闘中です。
まだ結果は出ませんが今しばらく時間をください。
下記のようにやってみましたがうまくいきませんでした。
uses mshtml_TLB
private
procedure BrowserDocumentComplete(Sender: TObject; pDisp: IDispatch;var URL: OleVariant);
procedure TForm1.BrowserDocumentComplete(Sender: TObject; pDisp: IDispatch;var URL: OleVariant);
var
window : IHTMLWindow2 ;
document :IHTMLDocument2;
web : IWebBrowser ;
//ページの表示完了
begin
//**Closeメソッドの無効化
try
web:= pDisp as Iwebbrowser;
document := web.document as IHTMLDocument2;
window := IHTMLWindow2(Document.parentWindow);
window.execScript('function close() {}','JavaScript' ) ;
except
end ;
end;
上記ソースですと、
JavaScriptのCloseメソッドが無効化されていると思います。
確かにこの方法だと、指令を受けとるではなくてあらかじめ操作を書き換えるですね。JavaScriptの実行を巧妙にフックし変更しようとなるとかなり難しいかと思います。(私にはわかりません。)
実行したい操作がJavaScriptやVBSで実現できる内容であれば{}の中にコードを書き込めばそのまま動作しますよ。
もう少し、動作内容が絞り込めればなにか手伝えるかもしれません。
OnButton1Clickの様な簡単な扱いは期待しないでくださいね。
monaaさんたびたびありがとうございます。
高度な操作みたいですので
もう少し勉強してみます。
一応解決とさせていただきました。
ありがとうございました。
ツイート | ![]() |