C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 38 を表示中)
■19402 / )  Re[11]: ショートカットファイルのアイコン設定
□投稿者/ こみ (7回)-(2008/05/22(Thu) 19:08:02)
No19393 (とっちゃん さん) に返信
> ■No19388 (こみ さん) に返信
>>途中報告です。
>
>>このようにショートカットの情報を取るものを実行してみました
>>結果「TargetPath」は正常に取得できますが「*.sln」に限って「IconLocation」のみ結果が「,0」としか取得できませんでした
>>
>>メモ帳などのショートカットの場合は「TargetPath」「IconLocation」とも正常に取得できます。
>
> ",0" と帰ってくるショートカットをエクスプローラのプロパティでアイコンの変更とした場合にどうなりますか?

何も起こりません、普通に設定できるようになります。
ちょっと違うのは、参照先が元からDLLとは違い、システムのDLL「%SystemRoot%\system32\SHELL32.dll」になっていることですね。
>
> それと、ショートカットファイルをどうやって作ったのか?も教えていただけると...
>
普通に右クリックで作成したものです、何も特別なことはしていません。
普通に作っただけなので、アイコンの表示も正常です。

> で、IconLocation ですが...
> 文字列で、"ファイルパス, アイコンインデックス" と指定するようですね。
> 形式的には、ProgId\DefaultIcon と同じ記述方法となっているようです。
>
> なので、実行可能ファイルのアイコンを指定したいという場合は、
> "...\Hoge.exe, 0" という形で指定すればいいのだろうと思います。
>
最初にそう思ったのですが、結果「白い四角のアイコン」になります。

> 逆にシステムのデフォルトの設定のままでよいというのであれば、
> IconLocation には何もしないという処理でよいのではないかとおもいます。
>
やってみたのですが、やりたいことが
.IconLocation = "C:\test.sln"
.TargetPath = "C:\Windows\notepad.exe"
のようなターゲットとアイコンが異なり、結果アイコンはメモ帳のアイコンになってしまいます
仮に
.IconLocation = "C:\Windows\regedit.exe"
.TargetPath = "C:\Windows\notepad.exe"
ならアイコンはレジストリエディタ、実行パスはメモ帳になります。

> 昔 IShellLink でファイルのショートカットを作っていたころは、アイコンのセットなんてやってませんでしたし。
>

たぶんリンク先のアイコンが正常に出てるためだと思います。

アイコンのイメージは取得できるのに、アイコンインデックスが取れないなんて変な物ですね・・・・。
返信 編集キー/


管理者用

- Child Tree -