トップ回答者
プログラムアイコンにドロップした情報を受け取る

質問
-
Windows8.1 update1 Visual C# 2013EXPRESSを使用しております。
プログラムのショートカットアイコンにファイルやフォルダをドロップして、
それを受け取って動くプログラムを作りたいと思っています。
調べてみて、Main関数の引数でstring[]として受ける方法と、
System.Environment.GetCommandLineArgs()の返り値として受ける方法がありました。
しかし、実際にどちらの方法を試してみても、プログラムがそれを受け取るように
出来ていないのか、もっと別の要因があるのか、期待通りの動作をしてくれません。
どんな感じ感というと、アイコンにファイルやフォルダをドロップしようとすると、
普通はポップアップが表示されて「プログラム**で開く」と出るところ、何も出ず、
ドロップした途端、プログラムアイコンが逃げてしまいます。
何か、プログラム以前の問題って感じです。
何か、足りない設定とか参照とか、ありうるのでしょうか?
よろしくご教授お願いします。
回答
-
ClickOnceの発行オプションで作られるショートカットはそういう物なのです。
他のインストーラーにするに変更するにしても、ExpressエディションだとInstallShieldは入らないのでWixとかになっちゃいますしね。そういうわけで、たとえばDOBON.NETさんのところにあるようなコードで、インストール時の初回実行のmain内で、自前でショートカットの作成を行ってください。
#最近復活したセットアッププロジェクトでもアドバタイズショートカットだったりして素直に取れなかったり
そうすれば、あとはSystem.Environment.GetCommandLineArgsなどで引数を取得できます。個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
- 回答としてマーク Tolbie 2014年7月7日 0:31
すべての返信
-
どんな感じ感というと、アイコンにファイルやフォルダをドロップしようとすると、
例えばメモ帳はドロップを受け付けていますので、同じ操作をメモ帳に対しても実行してみてください。「プログラムアイコンが逃げてしま」うようであれば、プログラム以前の問題で、質問者さんがWindowsの操作方法を知らないだけということになるかと思います。
普通はポップアップが表示されて「プログラム**で開く」と出るところ、何も出ず、
ドロップした途端、プログラムアイコンが逃げてしまいます。
何か、プログラム以前の問題って感じです。
# もしかしてタスクバーにピン留めされたアイコンに対してドロップしようとしていますか? -
-
ClickOnceの発行オプションで作られるショートカットはそういう物なのです。
他のインストーラーにするに変更するにしても、ExpressエディションだとInstallShieldは入らないのでWixとかになっちゃいますしね。そういうわけで、たとえばDOBON.NETさんのところにあるようなコードで、インストール時の初回実行のmain内で、自前でショートカットの作成を行ってください。
#最近復活したセットアッププロジェクトでもアドバタイズショートカットだったりして素直に取れなかったり
そうすれば、あとはSystem.Environment.GetCommandLineArgsなどで引数を取得できます。個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
- 回答としてマーク Tolbie 2014年7月7日 0:31
-
インストーラは、作った製品を第三者に使ってもらうために、その製品を起動できるようにするためのアプリケーションです。
ちなみに、ClickOnce は、インストーラの形式の一種です。
本題。
自分で作って自分で使うのであれば、わざわざインストーラを作ってインストールするのではなく、ショートカットがほしければ、Altキーを押しながら、ショートカットがほしいところにEXEをドラッグドロップや、該当フォルダ上で、コンテキストメニューから、ショートカット作成を選ぶ形式をお勧めします。
おそらく、今回の問題はそれで解決できます。
最初にも書きましたが、インストーラはあくまでも第三者に使ってもらうためのものであって、作成者本人が自分のマシンで使うツールのために用意されたものではありません。
自分のPC上で自分で作ったアプリのインストーラを実行するのは、そうしなければ動かせない別の理由(例えば、別アプリの機能拡張など)がある場合だけです。
とっちゃん@わんくま同盟, Microsoft MVP for Visual C++ (Oct 2005-) http://blogs.wankuma.com/tocchann/