デスクトップのアイコンを詳細表示にするには?

解決


ぼんじょるの  2004-05-21 21:00:16  No: 53727

いつもお世話になっています。
デスクトップのアイコンをリスト化(詳細表示)にしようかと
思っています。
デスクトップのハンドルは取得できましたが、SysListView32に
詳細表示のメッセージを送るところで躓いています。
ご教授お願いいたします。


シャノン  2004-05-21 22:07:34  No: 53728

なにができていないのか明確にしてください。
・デスクトップ ListView のハンドルが分からない
・詳細表示にさせる方法が分からない
・メッセージを送ったけど反映されない
・etc


ぼんじょるの  2004-05-21 22:17:40  No: 53729

シャノンさん、ご回答ありがとうございます。
ハンドル関連は取得できているので問題ないと思っています。
SendMessageで送る方法がよくわかりません。
何をどうやって送っていいのかがわかりません。


シャノン  2004-05-22 00:52:53  No: 53730

リストビューの表示スタイルを変更するには、LVM_SETVIEW というメッセージを投げてやります。
ListView_SetView マクロも使えます。

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/listview/messages/lvm_setview.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/listview/macros/listview_setview.asp

しかしコイツは WinXP でしか使えないので、Win2000 がまだまだ現役な今使うのはちょっと不安です。

仕方が無いので、SetWindowLong で表示スタイルを変更してやることになります。
が、SetWindowLong は対象ウィンドウを作成したスレッドと呼び出し側のスレッドが同じプロセスに属していないとできませんので、このままでは不可能です。
そこで、フックという手法を使い、SetWindowLong をエクスプローラに呼ばせるという方法をとります。面倒くさいです。

http://techtips.belution.com/ja/vc/0026/

ちなみに、LVM_SETVIEW を他プロセスに投げても大丈夫かどうかはわかりません。あとで実験してみます。


ぼんじょるの  2004-05-22 06:27:42  No: 53731

シャノンさん、ありがとうございます。
SetWindowLongでやってみたらできました。
ただ、アイコンをLISTにするとマイドキュメントしか表示されません。
いろいろ試してみます。ありがとうございました。


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

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






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