- - PR -
Windowsで作成されるショートカットについて
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-01-15 23:13
ランチャーを作っていてショートカットファイルがドラッグ&ドロップされたときに
http://santamartadotnet.hp.infoseek.co.jp/documents/dotnettips/tips043.html を参考にしてショートカットファイルから情報を取得し、元のファイルに直接リンクをつなぐようにしています(起動用のデータはファイル・コマンドライン・etcです) 通常ショートカットならば上手に行くのですが Windows Live MessengerやSmart FTP Clientなどのショートカットの場合コマンドプロンプトに飛んでしまってうまくいきません。 これらのファイルのプロパティを見てみるとリンク先項目が灰色になっています。 これらのファイルのリンク元を取得する方法があれば教えていただけないでしょうか?またこれらのファイルであることが取得できれば、そのファイルにだけ違う処理を行うこともできるのでそれでもOKです。 よろしくおねがいします。 _________________ 有末 清華 crazy(){for;;{you();}} - プログラマの覚書 | ||||
|
投稿日時: 2007-01-20 22:14
のようなデータがドラッグ&ドロップしたときに渡されます。 この MsblIco.Exe とはいったいなんでしょうか?Googleで調べてみましたがどうも解説書が見当たらず困っています。 ここにデータが保存されているはずなんだからMsblIcon.exeから元ファイルのデータ等取得できると思うんですが・・・ 情報の提供お願いします _________________ 有末 清華 crazy(){for;;{you();}} - プログラマの覚書 | ||||
|
投稿日時: 2007-01-21 00:01
既定の電子メールやブラウザなどは、lnk ではなく、レジストリの値を見ていますよね。
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-01-21 00:05
こんばんは。
詳しく分かりませんが、例えば、 Exelのショートカットはelicons.exeへ Wordのショートカットはwordicons.exeへ という風になっているようです。 これまで私がVisualStudioInstallerで作成してきた プログラムのショートカットもすべて、_4ae13d6c.exeなどの 一見すると実行ファイルのような見覚えのないファイルにリンクされていました。 で、そのファイルの中身を調べてみると、COMフォーマットでもPEフォーマットでもNEフォーマットでもなさそうです。 Windows(DOS)の実行ファイルは、先頭2バイトに"MZ"というシグネチャを持っていますが、 それがありません。 何らかのインストール情報を格納しているような気がします。 現象としては、下記の掲示板での内容と同じようですので ご参考にしてみてはいかがでしょう。 http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200610/06100006.txt 追記: Shell API(IShellLinkインターフェイス)を使わずに、 LNKフォーマットを直接読み込みたい場合は、 下記のサイトへどうぞ。 Wotsit's Format [ メッセージ編集済み 編集者: Tdnr_Sym 編集日時 2007-01-21 00:20 ] | ||||
|
投稿日時: 2007-01-21 01:20
こんばんは。
ちょっと調査してみましたが… もしかしてAdvertised Shortcutsというやつですかね。 なんだかIShellLink::Resolveで見つけられそうな気もするんですが。 Resolving Advertised Shortcuts with IShellLink::Resolve | ||||
|
投稿日時: 2007-01-21 02:42
こんばんは。
ウソを書いたようなので訂正しておきます。
隠し属性のInstallerフォルダからファイルを抜き出してみたところ、 elicons.exeやwordicons.exeは実行ファイルでした。"MZ"がついていました。 ただ、アイコンリソースを格納しているだけのように見えます。 #なんとなくショートカットの情報取得に WMIのWin32_ShortcutFile辺りが使えないのかなぁと思ってみたりもしているのですが… 追記: もしかして IShellLinkDataListインターフェイスを使わないといけないのかな?? http://msdn2.microsoft.com/en-us/library/ms538065.aspx [ メッセージ編集済み 編集者: Tdnr_Sym 編集日時 2007-01-21 03:49 ] | ||||
|
投稿日時: 2007-01-22 12:24
えっと、件のショートカットはすでに紹介されているように、MSIで作成されるアドバタイズショートカットです(リンク先がグレーのやつ)。
こちらのパスの解決は、MsiGetShortcutTarget といくつかのMSI APIを駆使して解決することになります。 C++のサンプルソースですが、MSIで作成されたショートカットファイルの解決 にあるので参考にしてください。 先にこのAPIで問い合わせてから、エラーなら、通常のショートカットとして扱うとやることで、中身を意識せずに処理することはできるかと思います。 #どこかでチェック方法を見たことがある気がするのですが覚えてない...orz _________________ // とっちゃん(高萩 俊行)@わんくま同盟 // とっちゃん’Blog // MS-MVP for Developer Tools - Visual C++ // WindowsInstallerの話題はhttp://www.freeml.com/msiまで | ||||
|
投稿日時: 2007-01-22 17:31
皆さんありがとうございました。無事データを取得することができました*^^
にしてもショートカットをこんな風に作成する利点っていったい…(汗。 _________________ 有末 清華 crazy(){for;;{you();}} - プログラマの覚書 |