- - PR -
【VB6.0】Windowsエクスプローラのフォルダ表示方法制御について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-07-08 00:40
VB(VisualBasic6.0)でエクスプローラ(フォルダ)の表示方法
(縮小版、並べて表示、アイコン、一覧、詳細)を制御したいと思っています。 APIを一通り探してみましたが見つかりませんでした。 エクスプローラーのようなプログラムを作っているのではなく(ListViewなど) 実際のエクスプローラ(フォルダ)を操作する方法が知りたいです。 フォルダの表示方法の制御の仕方で何か方法があれば教えて頂きたいです。 (APIに限らず) ※VB6.0での方法をお願いします。 ----- フォルダを開く⇒[表示]⇒[縮小版] 上記の流れをVBで実現したいです。([縮小版]はWinXPのみ) | ||||||||
|
投稿日時: 2006-07-08 11:42
ひなさん、こんにちは。
単体のVB6だと判りませんが、VisualStudio 6.0 には Spy++ というツールが付属しています。 これを使って、フォルダの表示方法を切り替えた際に、該当するエクスプローラの ListView ウィンドウに対してどのようなメッセージが飛んでいるのかを観察します。 で、プログラムで同様の事を行うためには、該当するエクスプローラの ListView ウィンドウのハンドルを取得して、SendMessage で同じようにメッセージを送ってやれば良いような気がします。試してませんが。 | ||||||||
|
投稿日時: 2006-07-08 12:12
とりあえず、COM Class はあるんですけど、IUnknown のみなんですよね。
IFolderView::SetCurrentViewMode Method 一応 Shell32.ShellFolderView にも CurrentViewMode property があるんですが、こっちはなぜか unsignedint 。なんじゃそれ。 ということで、type library 書いてやるとかしてやったほうがいいんじゃないかな? | ||||||||
|
投稿日時: 2006-07-11 00:09
>きくちゃん様
ご返答ありがとうございます。 SendMessage でどのようにメッセージを送ればよいのかで 悩んでいます。。 >ちゃっぴ様 ご返答ありがとうございます。 勉強不足ですが、type library とは?が良くわかりませんでした。 道は険しいです(>_<) | ||||||||
|
投稿日時: 2006-07-11 06:21
VB であつかう object は COM class の object なんですが、実装している interface により大きくいって2種類あります。 1. IUnknown interface のみを実装している 2. IUnknown に加え IDispatch interface を実装している VB6.0 で普通に扱えるのはこのうち 2 のみです。 で、1 の方は全く扱えないのかというとそうではなくて、type library というものを作ってやれば VB6.0 からでも扱えます。 # まあ、Win32API をゴリゴリと使って、COM method を呼び出す関数なんかを # 作ってやれば type library を作ってやらなくてもできないことは無いけど・・・ で、type library を作成するには、ODL か IDL を使って書いたものを MKTYPLIB.exe か MIDL.exe を利用して compile してやります。 Type Libraries and the Object Description Language (Component Automation) ちなみに type library とは C(C++) の型を VB の型にどう当てはめるかを記したようなもんだと思ってください。 とはいえ、これも結構敷居が高いでしょうから。 お手軽な方法を見つけたので。
Dim objFolderView As Object で宣言しているところがミソです。 Early binding だとこけます。 | ||||||||
|
投稿日時: 2006-07-12 10:19
>ちゃっぴ様
ありがとうございます。 実現が可能となりました! 他の方法で、sendmessageを使って実現することもできました。 '表示変更 Call SendMessage(obj.hwnd, &H111, &H702D, 0) SendMessageの引数で、 第2引数は、WM_COMMANDです。 第3引数 &H7029・・・(大きい)アイコン &H702A・・・(小さい)アイコン &H702B・・・一覧 &H702C・・・詳細 &H702D・・・縮小版 本当に、ありがとうございました。 | ||||||||
|
投稿日時: 2006-07-12 21:27
こういった値は公に「仕様」として公開されているものではないので、要注意です。 固定値でないことがあるし、Windows のバージョンアップなどで変わることもあります。 |
1