通常のフォルダやファイルのアイコンを取得するには、シェルAPIのShGetFileInfoで取得できますが、マイコンピュータのアイコンを取得するにはどのようにしたらいいのでしょうか?どなたかご存じの方がいらっしゃいましたら、ご教授下さい。
レジストリの中から取得…。
ちょっと無理やりでしょうか?
場所は覚えてませんけど、
レジストリエディタで"explorer.exe"などを検索してみたら、見つかると思います。
ご回答ありがとうございます。
レジストリを見るような力技しかないのでしょうか?
レジストリの位置は2000やXPなどOSのバージョンによって
変わったりするのであれば、難しいかなと思います。
調べてみたところ、ほかになさそうです。
でも、きめ打ちしても大丈夫かもと書いてありました。
よければ XP HomeSP1で確認してみますけど。
そちらのOSは何ですか?二つのOSで確認すれば、
しないよりはいいと思いますけど。
私の方のOSはXP HOMEsp1ですので最低限2000も
キーが同じであれば、使えるかと思います。
今ふと思いついて試してみたことがあります。
ShGetFileInfoでアイテムIdListを指定できるようなので、
SHGetSpecialFolderLocationでアイテムIDListを取得すれば
ShgetFileInfoでアイコンが取得できるかもしれないと思って
試してみました。結果は指定の仕方が悪いのかうまくいきませんでしたが、
APIでなんとかできないか試してみたいと思います。
APIでできなければ、たかみちえさんのご指摘のように
レジストリを使う方向で考えるしかなさそうです。
【つじッパ】 katsuさん「うまくいかない」って言ってるけど、アタシやってみたら出来ちゃった♪
【かごッパ】 ねぇねぇ、どうやったの?
【つじッパ】 同じ SHGetSpecialFolderLocation関数と、SHGetFileInfo関数を使ってだヨ♪
SHGetSpecialFolderLocation(Handle, CSIDL_DRIVES, pIDL);
SHGetFileInfo(PChar(pIDL), 0, FileInfo, SizeOf(FileInfo), SHGFI_PIDL or SHGFI_ICON or SHGFI_LARGEICON or SHGFI_DISPLAYNAME);
【かごッパ】 じゃ、katsuさんに教えてあげたら、お礼にキュウリ1本くれるかな〜♪
【つじッパ】 エ〜?、2本くらいおねだりしてもいいんじゃない♪
【まりッパ】 コラ!なに言ってんの。たとえ貧乏でも「カッパのホコリ」を忘れちゃ〜いけないよ。
【つじッパ】 まりッパねえちゃん、ゴメン〜。じゃ、キュウリ1本だけネ。
【まりッパ】 チガウでしょ。4本おねだりしなさい。
かっぱの花道さん、ご指摘どうもありがとうございます。
確かにできました。
私がうまくいかなかったのは、アイテムIDリストを取得した後、
SHGetFileInfoの第5パラメータが間違っていたためでした。
深謝申し上げます。
ツイート | ![]() |