- - PR -
applicationファイルをコマンドライン引数付きで別プログラムから起動したい
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-12-21 12:05
開発言語:VB2005 Express Edition
OS:WindowsXP SP2 メニュープログラム(applicationファイル)から 各処理(applicationファイル)を起動しようとしています。 その際にメニュープログラムでの情報をコマンドライン引数で 各処理のプログラムに渡そうとしましたところ コマンドライン引数が受け取られていないことが分かりました。 メニュープログラムのコード Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try Call System.Diagnostics.Process.Start( _ "起動したいapplicationファイル名", "引数1 引数2") Catch ex As Exception MsgBox(ErrorToString(), _ CType(MsgBoxStyle.OkOnly + MsgBoxStyle.Exclamation, MsgBoxStyle), _ System.Reflection.Assembly.GetExecutingAssembly.GetName.Name) End Try End Sub 各処理のコード Imports VB = Microsoft.VisualBasic Public Sub main() 'ここで何も表示されない MessageBox.Show(VB.Command) Using frm As Form = New Form1 Application.Run(frm) End Using Application.Exit() End Sub 色々調べたところVB2005ではMy.Application.CommandLineArgsを使うというのを知り MessageBox.Show(VB.Command) を MessageBox.Show(My.Application.CommandLineArgs(0)) で実行しても同じでした。 applicationファイルの起動の仕方が悪いのでしょうか? それとも何か別の方法があるのでしょうか? 教えて下さい。よろしくお願いします。 | ||||||||
|
投稿日時: 2006-12-21 12:46
単純にコマンドライン引数を取得したいのですよね?
_________________ -------------------------------------------- HIRO's.NET VB.NETとC#のTipsを掲載しています [ メッセージ編集済み 編集者: HIRO 編集日時 2006-12-21 12:53 ] | ||||||||
|
投稿日時: 2006-12-21 13:00
どの方法にしても (結局同じなので) 実装どおりの方法で取得できるハズですが...
長さ 0 の文字列として、ダイアログは表示されますよね? プロジェクトのプロパティにある、「コマンド ライン引数」 で指定した場合はどうでしょうか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-12-21 15:03
私の環境では、 MessageBox.Show(My.Application.CommandLineArgs(0)) は問題なく動作しましたよ
MessageBox.Show(My.Application.CommandLineArgs(0)) は起動したいアプリケーションの方に記述してますよね? _________________ -------------------------------------------- HIRO's.NET PowerShell,VB.NET,C#のTipsを掲載しています HIRO's.NET Blog PowerShell,VB.NET,C#を中心とした技術ネ | ||||||||
|
投稿日時: 2006-12-21 15:16
>HIROさん
>コード: -------------------------------------------------------------------------------- >Dim strCmds() As String >strCmds = System.Environment.GetCommandLineArgs() >Dim cmd As String >For Each cmd In strCmds > Console.WriteLine(cmd) >Next >-------------------------------------------------------------------------------- で試してみましたが、実行ファイル名だけが取得できて後は取得できませんでした。 ”MessageBox.Show(My.Application.CommandLineArgs(0)) は起動したいアプリケーションに記述しています。 >じゃんぬねっとさん 説明が足りませんでした。すみません。 何も表示されないのではなく長さ0の文字列がダイアログに表示されます。 プロジェクトのプロパティでコマンドライン引数を指定した場合はきちんと表示されます。 最初に書き忘れたのですが、 アプリケーションは全部「オンラインでのみ利用できる」を選択して 起動したいアプリケーションは「ClickOnceセキュリティ設定を有効にする」の チェックボックスを外しています。 チェックを入れるとデバッグ時に 「現在のプロジェクト設定は、プロジェクトが特定のセキュリティのアクセス許可で デバッグされることをしてしています。このモードでは、コマンドライン引数は 実行可能ファイルに渡されていません。デバッグを実行しますか?」 と表示されるためチェックを外しています。 | ||||||||
|
投稿日時: 2006-12-21 15:49
ClickOnceの場合、URLからロードされるのでコマンドライン引数が使えないのではないでしょうか?
_________________ -------------------------------------------- HIRO's.NET PowerShell,VB.NET,C#のTipsを掲載しています HIRO's.NET Blog PowerShell,VB.NET,C#を中心とした技術ネ | ||||||||
|
投稿日時: 2006-12-26 16:02
>HIROさん
どうやらご指摘の通りClickOnceではコマンドライン引数は使えないみたいでした。 なので別のファイルに出力する等の方法で受け渡しをしようと思います。 ありがとうございました。 | ||||||||
|
投稿日時: 2006-12-26 21:48
一応普通はクエリパラメータなどを使用します。 ※まあ事情によりそうはしない場合もありますが… |
1