マイコンピュータのアイコンを取得するには?

解決


katsu  2003-02-05 03:37:17  No: 2803

通常のフォルダやファイルのアイコンを取得するには、シェルAPIのShGetFileInfoで取得できますが、マイコンピュータのアイコンを取得するにはどのようにしたらいいのでしょうか?どなたかご存じの方がいらっしゃいましたら、ご教授下さい。


たかみちえ  URL  2003-02-05 04:32:34  No: 2804

レジストリの中から取得…。
ちょっと無理やりでしょうか?

  場所は覚えてませんけど、
レジストリエディタで"explorer.exe"などを検索してみたら、見つかると思います。


katsu  2003-02-05 06:17:02  No: 2805

ご回答ありがとうございます。
レジストリを見るような力技しかないのでしょうか?
レジストリの位置は2000やXPなどOSのバージョンによって
変わったりするのであれば、難しいかなと思います。


たかみちえ  URL  2003-02-05 06:39:52  No: 2806

調べてみたところ、ほかになさそうです。

  でも、きめ打ちしても大丈夫かもと書いてありました。
  よければ XP HomeSP1で確認してみますけど。
  そちらのOSは何ですか?二つのOSで確認すれば、
しないよりはいいと思いますけど。


katsu  2003-02-05 07:40:59  No: 2807

私の方のOSはXP HOMEsp1ですので最低限2000も
キーが同じであれば、使えるかと思います。

今ふと思いついて試してみたことがあります。
ShGetFileInfoでアイテムIdListを指定できるようなので、
SHGetSpecialFolderLocationでアイテムIDListを取得すれば
ShgetFileInfoでアイコンが取得できるかもしれないと思って
試してみました。結果は指定の仕方が悪いのかうまくいきませんでしたが、
APIでなんとかできないか試してみたいと思います。
APIでできなければ、たかみちえさんのご指摘のように
レジストリを使う方向で考えるしかなさそうです。


かっぱの花道  2003-02-06 08:14:19  No: 2808

【つじッパ】 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本おねだりしなさい。


katsu  2003-02-06 18:54:24  No: 2809

かっぱの花道さん、ご指摘どうもありがとうございます。
確かにできました。
私がうまくいかなかったのは、アイテムIDリストを取得した後、
SHGetFileInfoの第5パラメータが間違っていたためでした。

深謝申し上げます。


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

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






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