DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ショートカットへのドロップでプログラムを起動するには?

環境/言語:[Win2000 VB.NET 2002 .NET Framework(1.0)]
分類:[.NET]

fnです。こんにちは。
今回もお世話になります。

エクセルファイルをCSVファイルに変換するプログラムを作成しています。
仮にこの実行ファイル名を、AAA.exe とすると、
デスクトップ上の AAA.exe のショートカットに、
エクセルファイルを、ドラック&ドロップした時に、
AAA.exe が起動して、CSV変換処理を行いたいのです。

どのように書けばいいのかちんぷんかんぷんです。
そもそもこのようなことはできるのでしょうか?

よろしくお願いします。
■No3678に返信(fnさんの記事)
> fnです。こんにちは。
> 今回もお世話になります。
>
> エクセルファイルをCSVファイルに変換するプログラムを作成しています。
> 仮にこの実行ファイル名を、AAA.exe とすると、
> デスクトップ上の AAA.exe のショートカットに、
> エクセルファイルを、ドラック&ドロップした時に、
> AAA.exe が起動して、CSV変換処理を行いたいのです。
>
> どのように書けばいいのかちんぷんかんぷんです。
> そもそもこのようなことはできるのでしょうか?
>
> よろしくお願いします。

Main()のパラメータにstring配列を指定すれば、そのパラメータにファイルのパスが渡されるはずです。
■No3679に返信(りょうさんの記事)
> Main()のパラメータにstring配列を指定すれば、そのパラメータにファイルのパスが渡されるはずです。

ですが、
Form1の中に, Public Sub Main(ByVal cmd() As String)
と定義して、
 スタートアップの設定を Sub Main
にしてもビルドエラーになってしまいます。

Sub Main はどこに定義すればいいのでしょうか?
2004/04/16(Fri) 14:35:48 編集(投稿者)

■No3680に返信(fnさんの記事)
> Sub Main はどこに定義すればいいのでしょうか?

自己レスです。
Module1.vb に、Sub Main(ByVal cmd() As String)
を追加し、 cmd() の引数で確認できました。

しかしながら、ショートカットアイコンにファイルをドロップしても、
AAA.exe が反応してくれません。

どのようなコードを書いたら、AAA.exe が起動するのでしょうか?
■No3683に返信(fnさんの記事)
> 2004/04/16(Fri) 14:35:48 編集(投稿者)
>
> ■No3680に返信(fnさんの記事)
>>Sub Main はどこに定義すればいいのでしょうか?
>
> 自己レスです。
> Module1.vb に、Sub Main(ByVal cmd() As String)
> を追加し、 cmd() の引数で確認できました。
>
> しかしながら、ショートカットアイコンにファイルをドロップしても、
> AAA.exe が反応してくれません。
>
> どのようなコードを書いたら、AAA.exe が起動するのでしょうか?

試しに以下のコードではいかがでしょう。
ModuleではなくFormのLoadでやってますが要領は同じです。

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

MsgBox(Microsoft.VisualBasic.Command())

End Sub
2004/04/16(Fri) 15:58:51 編集(投稿者)

■No3691に返信(sasさんの記事)
>
> 試しに以下のコードではいかがでしょう。
> ModuleではなくFormのLoadでやってますが要領は同じです。
>
> Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
>
> MsgBox(Microsoft.VisualBasic.Command())
>
> End Sub

上記のコードでやってみましたがだめでした。
コマンドラインで、 "AAA.exe c:\tmp.xls" と代入すると c:\test.xls はちゃんとひろえるのですが、
肝心のショートカットアイコンに、c:\test.xls のアイコンをドラック&ドロップしても、AAA.exe が起動してくれませんでした。
> コマンドラインで、 "AAA.exe c:\tmp.xls" と代入すると c:\test.xls はちゃんとひろえるのですが、

「代入」「ひろえる」とは?

> 肝心のショートカットアイコンに、c:\test.xls のアイコンをドラック&ドロップしても、AAA.exe が起動してくれませんでした。

AAA.exeファイルにc:\test.xlsファイルを直接ドロップするとどうでしょうか?
■No3710に返信(管理人さんの記事)
>>コマンドラインで、 "AAA.exe c:\tmp.xls" と代入すると c:\test.xls はちゃんとひろえるのですが、
>
> 「代入」「ひろえる」とは?
>
DOSプロンプトを起動し、AAA.exeのフォルダまで移動した後、
"AAA.exe c:\tmp.xls" と実行すると、第一引数 c:\test.xlsを
きちんと認識してくれる。という意味で書きました。
(日本語がへたくそですみません。)

> AAA.exeファイルにc:\test.xlsファイルを直接ドロップするとどうでしょうか?

起動しました!!
また、AAA.exe を右クリックして、ショートカットを作成し、
そのショートカットにドロップするとできました。

そこで疑問がひとつあります。
いままで、私が言っていたショートカットは、

「ファイル」⇒「新しいプロジェクトの追加」⇒「セットアッププロジェクト」を作成し、
ファイルシステムのアプリケーションフォルダで、「追加」⇒「プロジェクト出力」⇒プライマリ出力を作成後、プライマリ出力のショートカットを作成し、そのショートカットを「ユーザーのデスクトップ」に移動して、セットアッププロジェクトを作成し、ビルド後、PCにインストールし、そのときにできたデスクトップ上のショートカットのことでした。

ある本に書いてあったことを丸々真似して作成したのですが、上記の要領では、ドラック&ドロップに対応したデスクトップのショートカットを作成できないということでしょうか?
> いままで、私が言っていたショートカットは、
>
> 「ファイル」⇒「新しいプロジェクトの追加」⇒「セットアッププロジェクト」を作成し、
> ファイルシステムのアプリケーションフォルダで、「追加」⇒「プロジェクト出力」⇒プライマリ出力を作成後、プライマリ出力のショートカットを作成し、そのショートカットを「ユーザーのデスクトップ」に移動して、セットアッププロジェクトを作成し、ビルド後、PCにインストールし、そのときにできたデスクトップ上のショートカットのことでした。
>
> ある本に書いてあったことを丸々真似して作成したのですが、上記の要領では、ドラック&ドロップに対応したデスクトップのショートカットを作成できないということでしょうか?

私の知る限りでは、その通りです。この手のショートカットは、実行ファイルを直接起動せず、コマンドラインを渡さないようです。(詳しい仕組みは、私も知りません。)
■No3820に返信(管理人さんの記事)
> 私の知る限りでは、その通りです。この手のショートカットは、実行ファイルを直接起動せず、コマンドラインを渡さないようです。(詳しい仕組みは、私も知りません。)

ご回答ありがとうございます。
ほかのインストローラにてショートカットを作成したいと思います。

たくさんのご回答ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板