環境:VB.NET 2003 & Window2000 SP3 IE6.0SP1
IEをCreateObject("InternetExplorer.application")で起動して
objInetExp.FullScreen = Trueで表示。マウスでスタートメニューも
タスクバーも選択できない状態になってます。
ポップアップメニューを表示して、IEを終了させたいです。
また、メニュー以外にも
CreateObject("Shell.Application").ToggleDesktopで切り替える
手段を思いつきましたが、とにかくイベントをアプリに通知する手段
がありません。
どなたか教えてください。
> とにかくイベントをアプリに通知する手段がありません。
DocumentプロパティをIHTMLDocumentインターフェイスで受けてやれば、
任意要素のイベントを取得できると思います。
# VB.NETでやった事はありませんが、VB6ではこの方法で、DHTMLの
# onclickイベントやoncontextmenuイベントなどを受信できています。
魔界の仮面弁士どの。回答ありがとうござい!
しかし、具体的な方法がわからず過去ログを参照しましたが、
VBからIEを操作するようなQ&Aばかりで、私の質問とどうような
物がなくて困っとります。すいません。よろしくお願いします。
とりあえず。MSHTML.TLBを参照設定したんですが..
VB6の場合は、デフォルトメソッドを持ったクラスモジュールを定義して、
それを 「Set IE.document.onclick = New Class1」などとする事で、
onclick発生時に、デフォルトメソッドが呼び出されるようになっていました。
(ただ、VB.NETのクラスは仕組みが違うので、この手法は使えないと予想しています)
> とりあえず。MSHTML.TLBを参照設定したんですが..
VB6では、HTMLDocument型とか、あるいはHTMLBodyElement型などを
WithEvents付きの変数として宣言しておく事で、各種イベントを
取得する事が出来ていました。VB.NETも、多分同様だと思います。
(IEのDocumentCompleteイベントが発生した時に、それらのWithEvents変数に、
IE.DocumentやIE.Document.body などを代入する必要があります)
魔界の仮面弁士さん。ありがとうございました。
教えていただいた形で実現しました。しかし、ポップアップメニューの使い方
がわからず、MessageBoxで確認メッセージを出力してIEを操作
する事にしてしまいました。
しかし、マウスのイベントをTrackPopupMenuで送ったら、どこで取得
するんでしょう?以前、このプロジェクトとは別に
Formクラスの親クラスイベントWinProcメソッドを使ったら
アプリが立ち上がらなくなった事があったもので..
' InternetExplorerのイベント
Friend WithEvents IE As New SHDocVw.InternetExplorer
' IEで読み込んだドキュメントからのイベント
Friend WithEvents DocEvent As mshtml.HTMLDocumentEvents_Event
Private Sub IE_DocumentComplete(ByVal pDisp As Object, ByRef url As Object) Handles IE.DocumentComplete
' ドキュメントを渡す
DocEvent = IE.Document
End Sub
Private Function DocEvent_ondbclick() As Boolean Handles DocEvent.ondblclick
Dim ret As DialogResult
ret = MessageBox.Show()
If ret = DialogResult.OK Then
' IEを閉じる
End If
End Function
> ポップアップメニューの使い方がわからず、
使うとすれば、popupオブジェクトですかね。
windowオブジェクトのcreatePopupメソッドで生成できます。
# 私自身は、VBScript5.6から popupメソッドを使った事はあるものの、
# VB6やVB.NETから利用した事はありませんが……まぁ、多分使えるでしょう(^^;)
うう..windowオブジェクトがどこの名前空間にあるのかも
わかりません。誰かおしえて?
windowオブジェクトは、documentオブジェクトの
parentWindowプロパティにて取得する事ができます。
その後は、window.createPopupメソッドでpopupオブジェクトを生成し、
そのpopup.documentプロパティに、メニュー項目となるHTML要素を記載する、と。
教えてください!
以下のような物を書いたのですが、document変数をウォッチすると
ParentWindowが内部キャストエラーになっているのですが..
Object型に代入すると、必要なメソッドがそのクラスに存在するのか分からない
もので..
Private HTMLWin As mshtml.HTMLWindow2
Private Sub IE_DocumentComplete(ByVal pDisp As Object, ByRef url As Object) Handles IE.DocumentComplete
' ドキュメントを渡す
HTMLDocEvent = IE.Document
Dim document As mshtml.IHTMLDocument = IE.Document ' ← 問題あり?
HTMLWin = document.parentWindow
End Sub
Private Function HTMLDocEvent_ondbclick() As Boolean Handles HTMLDocEvent.ondblclick
' ポップアップメニューを生成
Dim popup As mshtml.HTMLPopup = HTMLWin.createPopup
Dim popupBody As mshtmt.?? '忘れちゃいました
popupBody.innerHTML = "<b>いやん</b>"
' ポップアップメニューを表示
popup.show(X,Y,100,200,popupBody)
End Function
すいません。新規に質問を書きます。
「解決」ってしてたら回答なんかありませんよね..
ツイート | ![]() |