WebBrowserで詳細表示にするには?

解決


いくら  2004-06-14 17:18:53  No: 84017  IP: [192.*.*.*]

WebBrowser1.Navigate2 "c:\windows"
で、シェルのオブジェクトを表示した場合、大きいアイコンで表示されます。
これを、デフォルトで詳細表示にしたい場合、どうしたらいいでしょうか?
Win98/IE5/VB6です。宜しくお願いします。

編集 削除
いくら  2004-06-15 15:28:24  No: 84018  IP: [192.*.*.*]

右クリックメニューで、ビュースタイルを変更した時のメッセージを調べて
みたら、メニューのコマンドIDが &H702C の場合が詳細スタイルになる様です。
Call SendMessage(hwndDefView, WM_COMMAND, &H702C, ByVal 0&)
hwndDefView は、"SHELLDLL_DefView" クラスのウィンドウハンドルでした。
邪道とは思いますが、これで成功します。

他に適当なメソッドやプロパティをご存知でしたら、教えて下さい。

編集 削除
いくら  2004-06-28 16:35:20  No: 84019  IP: [192.*.*.*]

関連内容なので、続けて質問しました。

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に対応しているので、このイベントハンドラを実装する方法が判れば可能ではないかと思うのですが、ここで停滞しています。
ヒントでも結構です。ご教授お願いします。

編集 削除
魔界の仮面弁士  2004-06-28 17:26:32  No: 84020  IP: [192.*.*.*]

> 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

編集 削除
いくら  2004-06-28 19:56:12  No: 84021  IP: [192.*.*.*]

魔界の仮面弁士 さん  回答ありがとうございます。

お蔭様で、SelectionChangedイベントが得られました。
やはり、Win98ではその他のイベントが送られてこない様です。

あと、参考までに教えて戴きたいのですが、ShellFolderViewOCのMSDN
に載っていないイベントに、
BeginDrag, DefaultVerbInvoked, VerbInvoked が存在します。
BeginDragは想像できるのですが、残りの2つは、どういう時に発生する
のでしょうか?
サンプルにあるDefaultVerbInvoked()イベントでは、どういう処理を
しているんでしょうか?
宜しくお願いします。

編集 削除
魔界の仮面弁士  2004-06-28 20:37:20  No: 84022  IP: [192.*.*.*]

> BeginDrag, DefaultVerbInvoked, VerbInvoked が存在します。
> BeginDragは想像できるのですが、残りの2つは、どういう時に発生する
のでしょうか?
文字通りの意味に取るなら、
  『既定の「Verb」が「Invokeされた後」で発生するイベント』
という事になりますよね。

この場合の Verb は、FolderItemVerb オブジェクトを連想してください。
すなわち DefaultVerbInvoked とは、「ダブルクリック相当の処理」が
発生したという事を意味します。

> サンプルにあるDefaultVerbInvoked()イベントでは、どういう処理を
> しているんでしょうか?
フォルダをダブルクリックする事によって、別のフォルダが
表示されますが、この時、FolderViewオブジェクトの参照を
取り直す必要がありますので、そのための処理を行ってあります。

なおこの時、戻り値に True を指定しなかった場合(Falseが指定された時)、
フォルダの移動処理がキャンセルされる事になります。

編集 削除
いくら  2004-06-28 22:18:34  No: 84023  IP: [192.*.*.*]

判り易い解説ありがとうございました。

編集 削除