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

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

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

Re[1]: ショートカットファイルがあるフォルダを取得するには


(過去ログ 112 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■66214 / inTopicNo.1)  ショートカットファイルがあるフォルダを取得するには
  
□投稿者/ take (1回)-(2013/04/09(Tue) 16:37:00)

分類:[C#] 

2013/04/09(Tue) 16:37:52 編集(投稿者)
2013/04/09(Tue) 16:37:27 編集(投稿者)
2013/04/09(Tue) 16:37:20 編集(投稿者)

エクスプローラで、
ファイルを右クリックすると表示されるメニューに項目(Hoge.exeを開く)を追加しました。
その項目をクリックすると、Hoge.exe が実行されます。

右クリックメニューへの追加はレジストリに登録しました。
HKEY_CLASSES_ROOT/*/shell/Hoge.exeを開く/command
 名前:既定
 種類:REG_SZ
 データ:c:\Hoge.exe %1


Hoge.exe 実行時に、右クリックしたファイルがあるフォルダを取得したいのですが。
通常のファイルの場合は、
コマンドライン引数として、レジストリに登録したデータの%1 の部分に入ってくるのですが

ファイルがショートカットファイルだと、
ショートカット先のファイルパスが入ってきてしまいます。

ショートカットファイルがあるフォルダを取得するにはどうしたらいいのでしょうか?
引用返信 編集キー/
■66231 / inTopicNo.2)  Re[1]: ショートカットファイルがあるフォルダを取得するには
□投稿者/ とっちゃん (99回)-(2013/04/10(Wed) 12:00:03)
とっちゃん さんの Web サイト
No66214 (take さん) に返信
> 通常のファイルの場合は、
> コマンドライン引数として、レジストリに登録したデータの%1 の部分に入ってくるのですが
>
> ファイルがショートカットファイルだと、
> ショートカット先のファイルパスが入ってきてしまいます。
>
> ショートカットファイルがあるフォルダを取得するにはどうしたらいいのでしょうか?

ショートカットファイルをドロップすると、ショートカットの参照先として
解決されたものが渡されてくるということでしょうか?

例えば
スタートメニューにある、Visual Studio 2012 のショートカットをドロップしてきたら
"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Visual Studio 2012\Visual Studio 2012.lnk"
ではなく、
"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe"
で起動されたと。

基本仕様として、ショートカットを解決してファイルパスを渡すとなっているので
これについてはこういうもの。。。と割り切るほうがいいと思いますよ。

一応、調査のための足掛かりはおいておきます。
http://msdn.microsoft.com/en-us/library/bb773177.aspx

が、シェル(エクスプローラのことです)に関するドキュメントのトップとなります。

半端なく膨大ですが(これだけで専門書籍一冊分は余裕であります)、各種関連付けに関するものも出ているので
もしかしたら、ショートカットを解決しないで渡すというフラグがあるかもしれません。


自分ではそんなことしようと思ったことがなかったので調べきれませんでした。

引用返信 編集キー/
■66232 / inTopicNo.3)  Re[1]: ショートカットファイルがあるフォルダを取得するには
□投稿者/ shu (274回)-(2013/04/10(Wed) 12:00:11)
2013/04/10(Wed) 12:43:09 編集(投稿者)

No66214 (take さん) に返信
> ファイルがショートカットファイルだと、
> ショートカット先のファイルパスが入ってきてしまいます。
>
> ショートカットファイルがあるフォルダを取得するにはどうしたらいいのでしょうか?
今回試された方法ではHoge.exeに渡された時点でOSによりショートカットのリンク解決が
完了してしまっているのでHoge.exeでどんなに頑張ってもショートカットの情報を取得することが
出来ません。

ショートカットのファイル名をダイレクトに指定する手段を考える必要があります。
ショートカットに対するコンテキストメニューに『ファイルの場所を開く』というのが
あり、これと同じことをしたいということになるかと思いますが、その方法を見つけることは
出来ませんでした。多分シェルエクステンションの類になってくるかと思います。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -