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

わんくま同盟

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

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


(過去ログ 38 を表示中)
■19495 / )  Re[16]: ショートカットファイルのアイコン設定
□投稿者/ こみ (10回)-(2008/05/23(Fri) 19:30:32)
No19462 (とっちゃん さん) に返信
> ■No19422 (こみ さん) に返信
> 
>>外部ファイルのショートカットを作りたい!
>>条件
>>・ショートカットのターゲットは必ず「"固定パス自作アプリ.exe" "パラメータ"」
>>・ショートカットのアイコンは指定したファイルのアイコンと同じもの
>>希望結果
>>アイコンは普通なのに、実際実行してみると、「自作アプリ.exe」が起動してごちゃごちゃする
>>
>>処理の流れ
>>起動した後、ファイル選択ダイアログを表示して、ファイルを一つ指定、
>>その後「ターゲットを"固定パス自作アプリ.exe" "パラメータ"」「アイコンは選択されたファイルのアイコン」で
>>ショートカットを作成して終了
>>
>>
>>これだけです、
>>指定されるファイルは決まっていません。
>>
> ターゲット部分については問題ないということでOKですかね?
> 
> 問題なのは、アイコンをどうやって選択させるか?と
> その選択させたアイコンをどう指定するか?
> ということでいいですか?
> 
> ここは、一対で考える必要がある部分になると思いますが
> まずはアイコンをセットするための方法を確定しておきたいところですね。
> 
> 要するに、.IconLocation にどういう値をセットすれば意図したものになるか?
> です。
> #これで最初の部分に戻るはず。
> 
> さて、とりあえず今の時点で成功した風になっているのは
> "C:\Windows\System32\regedit.exe" など、アイコンを持つファイルを
> そのまま指定した場合ということでいいですかね。
> 
> 本番に行く前に.txtのデフォルトあたりで試してみますか。
> XP以降のOSであれば、.txt のデフォルト設定は
> txtfileというProgIdになっています(ProgId=HKEY_CLASSES_ROOT\HogeType の HogeType にあたる部分のこと)。
> 
> このキーには、DefaultIcon が適度にいい感じで設定されていますのでこれを利用してみます。
> XP ではこの値は
> %SystemRoot%\system32\shell32.dll,-152
> Vistaでは
> %SystemRoot%\system32\imageres.dll,-102
> となっており、いずれも、REG_EXPAND_SZ という型で保持されているはずです。
> プログラム的には展開して取り出すわけですが、今は手作業でやるという前提で考慮して
> %SystemRooT% は、そのまま、C:\Windows など Windows のインストール先に置き換えて文字列を用意してください。
> 
> これをそのまま、(,-102という部分も含め)指定してみてください。
> 
> うまくテキストファイルのアイコンになれば、WSHの.IconLocation での設定は "パス,数値" とDefaultIcon と
> 同じ形でセットできるということになります。
> もし、これがだめだということになると、この方法(WSHでのショートカット作成)は使えないということになります。
> 
> 
> まずは、ここまでを実験してみてください。
> 
> わからないところがあったら、素直にわからないと言ってくださいね。
> 言わないとわからないということがわからないですから。
> 
> 文章見ればわかると思いますが、実際に実験して動くという確証を持ってやってませんのでその部分は
> ご了承いただきたいと思います。
> 

ありがとうございます!
確認したところアイコンファイルを「txtfile」から確認することができました!
指定方法は以下の通りです

        With oShortcut
            .IconLocation = "%SystemRoot%\system32\imageres.dll,-102"
            .TargetPath = System.IO.Path.Combine(Application.StartupPath, "てすと.exe") 'リンク元のファイル名
            .Save()
        End With

これでアイコンはテキストファイル・実行パスは「てすと.exe」と、成功しました。

しかしレジストリには問題の「slnfile」が存在していません。
まだ色々と存在するものとしないものもあるようです、
なにかしら辿っていかないと駄目なようですね・・・

返信 編集キー/


管理者用

- Child Tree -