- - PR -
Webbrowserでの制御方法について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-10-27 13:44
お世話になります。
VB.netでのWebbrowserの機能について質問があります 現在、WebbrowserコントロールをVB画面に貼り付け Webbrowser中に表示されているHTMLのボタン操作を VB側から検知する仕組みを検討しています。 ex)パスワード入力画面 HTMLで作成されたパスワード入力画面をWebbrowserに表示させ パスワード入力後に、パスワードをVBで取得・暗号化し、WEBサーバに 投げる。この際、ボタン押下後にボタンの内容が変わることはありません (「決定」押下→「確定」等) 上記、機能を満たそうとし、ボタン押下イベントをイベントフック(ハンドラー) で実現したのですが、クリックしたイベントは拾えますが、パスワードを 入力するInputTAGにフォーカスが移らずパスワードを入力することが できません。 HTMLの表示に関しては、一般のIEと同様にし、ボタンイベントをVB側で 取得することは可能なのでしょうか。 申し訳ありませんが、知っている方がおられましたら教えてください 以上 | ||||
|
投稿日時: 2004-10-27 14:04
可能です。 大まかな手順は以下のとおりです。 (1) IOleClientSite, IDocHostUIHandler を実装した COM オブジェクトを作成する。 (2) ↑をブラウザコントロールに IOleObject::SetClientSite() する。 (3) IDocHostUIHandlere::GetExternal() で、ディスパッチオブジェクトの参照を返す。 (4) ↑が windows.external として公開される。 詳細は、MSDN の Programing and Reusing the Broweser 配下のドキュメントを参照してください。 _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://hidori.jp/ // Microsoft MVP for Visual C# // // @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/ | ||||
|
投稿日時: 2004-10-27 16:48
ご教授ありがとうございました。 申し訳ないのですが、まだ不明な点がありまして・・ 当方の環境は、VB.netなのですが、 IOleObject::SetClientSite() は、どういう手続きで利用できるものなのでしょうか。 今こちらの環境では AxWebBrowserを用いておこなっているのですが、 そこから利用することも可能でしょうか。 よろしければ、引き続きどなたかご教授をお願いします。 | ||||
|
投稿日時: 2004-10-27 20:07
VB6で作ったサンプルです。
おそらくVB.NETに移植できるでしょう。 Microsoft Internet Contorls(shdocvm.dll) Microsoft HTML Object Library(mshtml.tlb) を参照して.. Option Explicit Private WithEvents IE As InternetExplorer Private WithEvents F As HTMLFormElement Private Sub Form_Click() Set IE = CreateObject("InternetExplorer.Application") IE.Navigate2 "http://www.google.co.jp/" IE.Visible = True End Sub Private Sub IE_DocumentComplete(ByVal pDisp As Object, URL As Variant) If (IE.LocationURL = "http://www.google.co.jp/") Then Set F = IE.Document.Forms(0) End Sub Private Function F_onsubmit() As Boolean MsgBox F.elements("q").Value F_onsubmit = True End Function 参考 http://www.ken3.org/cgi-bin/group/vba_ie.asp [ メッセージ編集済み 編集者: todo 編集日時 2004-10-27 20:19 ] | ||||
|
投稿日時: 2004-10-27 20:41
MSDN を参考に IOleObject インターフェースのマネージ定義を自分で書くか、 P/INVOKE.NET http://www.pinvoke.net/ などを検索して、誰かが書いたものを探します。 IOleObject のマネージ定義があれば、 AxWebBroweser axWebBrowser = new AxWebBrowser(); のような時、AxWebBrowser が実装する IOleObject インターフェースの参照は IOleObject oleObject = axWebBrowser as IOleObject で取得することができます。 _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://hidori.jp/ // Microsoft MVP for Visual C# // // @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/ |
1