IEをFullScreenで表示して、PopupMenuで制御

解決


とおりすがり  2003-12-17 05:05:51  No: 80935

環境:VB.NET 2003 & Window2000 SP3 IE6.0SP1
IEをCreateObject("InternetExplorer.application")で起動して
objInetExp.FullScreen = Trueで表示。マウスでスタートメニューも
タスクバーも選択できない状態になってます。

ポップアップメニューを表示して、IEを終了させたいです。
また、メニュー以外にも
CreateObject("Shell.Application").ToggleDesktopで切り替える
手段を思いつきましたが、とにかくイベントをアプリに通知する手段
がありません。

どなたか教えてください。


魔界の仮面弁士  2003-12-17 07:31:26  No: 80936

> とにかくイベントをアプリに通知する手段がありません。

DocumentプロパティをIHTMLDocumentインターフェイスで受けてやれば、
任意要素のイベントを取得できると思います。

# VB.NETでやった事はありませんが、VB6ではこの方法で、DHTMLの
# onclickイベントやoncontextmenuイベントなどを受信できています。


とおりすがり  2003-12-17 19:30:29  No: 80937

魔界の仮面弁士どの。回答ありがとうござい!

しかし、具体的な方法がわからず過去ログを参照しましたが、
VBからIEを操作するようなQ&Aばかりで、私の質問とどうような
物がなくて困っとります。すいません。よろしくお願いします。

とりあえず。MSHTML.TLBを参照設定したんですが..


魔界の仮面弁士  2003-12-17 19:45:00  No: 80938

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 などを代入する必要があります)


とおりすがり  2003-12-18 03:26:42  No: 80939

魔界の仮面弁士さん。ありがとうございました。

教えていただいた形で実現しました。しかし、ポップアップメニューの使い方
がわからず、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


魔界の仮面弁士  2003-12-18 08:04:36  No: 80940

> ポップアップメニューの使い方がわからず、
使うとすれば、popupオブジェクトですかね。
windowオブジェクトのcreatePopupメソッドで生成できます。

# 私自身は、VBScript5.6から popupメソッドを使った事はあるものの、
# VB6やVB.NETから利用した事はありませんが……まぁ、多分使えるでしょう(^^;)


とおりすがり  2003-12-19 04:15:40  No: 80941

うう..windowオブジェクトがどこの名前空間にあるのかも
わかりません。誰かおしえて?


魔界の仮面弁士  2003-12-19 04:54:15  No: 80942

windowオブジェクトは、documentオブジェクトの
parentWindowプロパティにて取得する事ができます。

その後は、window.createPopupメソッドでpopupオブジェクトを生成し、
そのpopup.documentプロパティに、メニュー項目となるHTML要素を記載する、と。


とおりすがり  2003-12-20 20:06:20  No: 80943

教えてください!  
以下のような物を書いたのですが、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


とおりすがり  2003-12-22 19:47:45  No: 80944

すいません。新規に質問を書きます。
「解決」ってしてたら回答なんかありませんよね..


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加