- PR -

Windowsフォルダアイコンの変更

投稿者投稿内容
ひろひろ
常連さん
会議室デビュー日: 2004/07/23
投稿数: 36
投稿日時: 2006-06-12 02:30
いつもお世話になっています。
当方VS.NET2003でC#アプリケーションを開発しています。

そんな中一点質問です。

WindowsXPにてエクスプローラー上でフォルダを右クリックして
プロパティ→カスタマイズ→アイコンの変更
で、特定のフォルダアイコンを自由変更できます。

これをC#2003で実装したいのですが、Googleで検索しても上手く見つかりません。
また、一通り@ITも検索してみたのですが、見つかりませんでした。

C#初心者なため、こんな簡単そうなことが良くわからないのです。。
申し訳ありませんがどなたかご教授ください。よろしくお願いします。

ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-06-12 03:20
その変更されている folder 直下に存在する desktop.ini を調査してみてください。

あと、それを desktop.ini を読み込むためには、対象の folder の属性を読み取り専用にしてやることが必要だったような・・・

まあ、手作業でもできることなんでいろいろ試してみてください。
ひろひろ
常連さん
会議室デビュー日: 2004/07/23
投稿数: 36
投稿日時: 2006-06-12 10:32
>ちゃっぴさん
返信ありがとうございます。
引用:

その変更されている folder 直下に存在する desktop.ini を調査してみてください。


フォルダのアイコンを変更してみてdesktop.iniを探してみましたが、見当たりませんでした。隠しファイルも念のため確認してみましたが、ありませんでした
何か設定が必要なのでしょうか?

[ メッセージ編集済み 編集者: ひろひろ 編集日時 2006-06-12 10:33 ]
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2006-06-12 11:16
>何か設定が必要なのでしょうか?
このファイル、一回でもカスタマイズしないとできないですね、確か。

http://www.wac-jp.com/programmers/win32/DesktopIniHelper_SetFolderIcon.html

こんなサンプルがありました。
ひろひろ
常連さん
会議室デビュー日: 2004/07/23
投稿数: 36
投稿日時: 2006-06-12 11:28
>mioさん
返信ありがとうございます。
引用:

>何か設定が必要なのでしょうか?
このファイル、一回でもカスタマイズしないとできないですね、確か。


カスタマイズしてるんですが、やはり出てこない。。。
何か環境の問題ですかね??

引用:

http://www.wac-jp.com/programmers/win32/DesktopIniHelper_SetFolderIcon.html

こんなサンプルがありました。


C++のコードということは、一旦DLL化してからC#でロードするような形になりますかね??
C#のみで実現できないのであれば、仕方ないです。。。そうします。
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-06-12 12:58
引用:
カスタマイズしてるんですが、やはり出てこない。。。



保護されたオペレーティング システム ファイル を表示しない
を off にしてください。
ひろひろ
常連さん
会議室デビュー日: 2004/07/23
投稿数: 36
投稿日時: 2006-06-12 15:08
>ちゃっぴさん
ありがとうございます。
引用:

保護されたオペレーティング システム ファイル を表示しない
を off にしてください。


出てきました。構成設定というファイルの種類で。
Desktop.iniの中にアイコンをロードするdll名とアイコンIndex
があるのでこのあたりをもう少し調査してみます。

ありがとうございました。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-06-12 16:40
引用:

ひろひろさんの書き込み (2006-06-12 15:08) より:

Desktop.iniの中にアイコンをロードするdll名とアイコンIndex
があるのでこのあたりをもう少し調査してみます。


単純なアイコン (.ico) ファイルの場合は、ファイルパスを指定して、index は 0 で良いです。

コード:

[.ShellClassInfo]
IconFile=E:\My Documents\Skins\Icons\MosaMosaAA.ico
IconIndex=0


.icl や .dll などは、IconIndex を指定します。
このあたりまで対応するとなると、アプリケーション上で一覧を取得せねばなりませんね。

# カスタマイズしていた頃が懐かしい。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

スキルアップ/キャリアアップ(JOB@IT)