いつもお世話になっています。
デスクトップのアイコンをリスト化(詳細表示)にしようかと
思っています。
デスクトップのハンドルは取得できましたが、SysListView32に
詳細表示のメッセージを送るところで躓いています。
ご教授お願いいたします。
なにができていないのか明確にしてください。
・デスクトップ ListView のハンドルが分からない
・詳細表示にさせる方法が分からない
・メッセージを送ったけど反映されない
・etc
シャノンさん、ご回答ありがとうございます。
ハンドル関連は取得できているので問題ないと思っています。
SendMessageで送る方法がよくわかりません。
何をどうやって送っていいのかがわかりません。
リストビューの表示スタイルを変更するには、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 を他プロセスに投げても大丈夫かどうかはわかりません。あとで実験してみます。
シャノンさん、ありがとうございます。
SetWindowLongでやってみたらできました。
ただ、アイコンをLISTにするとマイドキュメントしか表示されません。
いろいろ試してみます。ありがとうございました。
ツイート | ![]() |