WebBrowser1.Navigate2 "c:\windows"
で、シェルのオブジェクトを表示した場合、大きいアイコンで表示されます。
これを、デフォルトで詳細表示にしたい場合、どうしたらいいでしょうか?
Win98/IE5/VB6です。宜しくお願いします。
右クリックメニューで、ビュースタイルを変更した時のメッセージを調べて
みたら、メニューのコマンドIDが &H702C の場合が詳細スタイルになる様です。
Call SendMessage(hwndDefView, WM_COMMAND, &H702C, ByVal 0&)
hwndDefView は、"SHELLDLL_DefView" クラスのウィンドウハンドルでした。
邪道とは思いますが、これで成功します。
他に適当なメソッドやプロパティをご存知でしたら、教えて下さい。
関連内容なので、続けて質問しました。
WebBrowserコントロール内に表示されたシェル・アイテムの選択を変更した場合のイベントを得る方法を教えて下さい。
ShellFolderViewOC Object
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/objects/shellfolderviewoc/shellfolderviewoc.asp
によると、SetFolderViewメソッドで、ShellFolderViewオブジェクトのイベントをShellFolderViewOCオブジェクトのSelectionChangedイベントハンドラに転送するらしいのですが、SetFolderViewメソッドは、Win98未対応なので、使用できない様です。
しかし、SelectionChangedイベントは、Win98に対応しているので、このイベントハンドラを実装する方法が判れば可能ではないかと思うのですが、ここで停滞しています。
ヒントでも結構です。ご教授お願いします。
> SelectionChangedイベントは、Win98に対応しているので、
> このイベントハンドラを実装する方法が判れば可能ではないかと
Win2000未満の環境が無いので確認できませんが…。
Option Explicit
Private WithEvents FolderView As Shell32.ShellFolderView
Private Function FolderView_DefaultVerbInvoked() As Boolean
Set FolderView = WebBrowser1.Document
FolderView_DefaultVerbInvoked = True
End Function
Private Sub FolderView_SelectionChanged()
Debug.Print FolderView.FocusedItem.Path
End Sub
Private Sub Form_Load()
Me.WebBrowser1.Navigate2 "C:\"
End Sub
Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
Set FolderView = pDisp.Document
End Sub
魔界の仮面弁士 さん 回答ありがとうございます。
お蔭様で、SelectionChangedイベントが得られました。
やはり、Win98ではその他のイベントが送られてこない様です。
あと、参考までに教えて戴きたいのですが、ShellFolderViewOCのMSDN
に載っていないイベントに、
BeginDrag, DefaultVerbInvoked, VerbInvoked が存在します。
BeginDragは想像できるのですが、残りの2つは、どういう時に発生する
のでしょうか?
サンプルにあるDefaultVerbInvoked()イベントでは、どういう処理を
しているんでしょうか?
宜しくお願いします。
> BeginDrag, DefaultVerbInvoked, VerbInvoked が存在します。
> BeginDragは想像できるのですが、残りの2つは、どういう時に発生する
のでしょうか?
文字通りの意味に取るなら、
『既定の「Verb」が「Invokeされた後」で発生するイベント』
という事になりますよね。
この場合の Verb は、FolderItemVerb オブジェクトを連想してください。
すなわち DefaultVerbInvoked とは、「ダブルクリック相当の処理」が
発生したという事を意味します。
> サンプルにあるDefaultVerbInvoked()イベントでは、どういう処理を
> しているんでしょうか?
フォルダをダブルクリックする事によって、別のフォルダが
表示されますが、この時、FolderViewオブジェクトの参照を
取り直す必要がありますので、そのための処理を行ってあります。
なおこの時、戻り値に True を指定しなかった場合(Falseが指定された時)、
フォルダの移動処理がキャンセルされる事になります。
判り易い解説ありがとうございました。
編集 削除