外部exeに対しての引数受け渡し

このQ&Aのポイント
  • VB.netで外部のexeファイルを呼び出す際に、複数の引数を渡す方法について質問です。
  • DBを検索し、ヒットしたファイルを開くために、複数の引数を格納する構文についても質問しています。
  • VB.netを始めたばかりで情報が不足しているかもしれませんが、助言していただけると助かります。
回答を見る
  • ベストアンサー

外部exeに対しての引数受け渡し

お世話になります。 2点ほどVB.netのコーディングに関して質問があります。 環境:VB2008 DB:SQLSEVER A = アプリケーション1 B = アプリケーション2 複数の引数 = DB検索情報(key,テーブル名)&ヒットしたファイルが格納されているルートディレクトリ ●実装したい機能 Aから外部のB(exe)を呼び出し、Aから受け取った複数の引数を元にDBを検索しファイル名をヒットさせ、そのファイルを開く。 質問(1) Aから外部のB(exe)を呼び出すときにAで取得した複数の引数をBに渡す方法はどうするのでしょうか? 質問(2) 受け取った引数を元にDBを検索し、ヒットしたファイルを開きたいのですが、その複数の引数を格納する構文はどういったものになるのでしょうか? ネットで調べはしましたが、いまいちピンとくるものがなく質問した次第です。 最近VBを始めたもので、質問をする上で情報が欠如しているかもしれませんが、ご回答頂けると幸いです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.2

> 受け取った引数が("SomeEXE.exe", "hoge.txt fuga.txt piyo.txt")となっていますが、 > この"hoge.txt fuga.txt piyo.txt"をxとyといった変数に別々に格納したいのですが・・・。 > xにhoge.txt fuga.txt > yにpiyo.txt > といった感じです。  Process.Start("SomeEXE.exe", "hoge.txt fuga.txt piyo.txt") としたとき、Mainメソッドに渡される引数は  CmdArgs(0) → "hoge.txt"  CmdArgs(1) → "fuga.txt"  CmdArgs(2) → "piyo.txt" になります。(スペース区切り)  Process.Start("SomeEXE.exe", """hoge.txt fuga.txt"" piyo.txt") //←ひとまとめにしたい引数はダブルクォーテーション(")で囲う とすると、Mainメソッドに渡される引数は  CmdArgs(0) → "hoge.txt fuga.txt"  CmdArgs(1) → "piyo.txt" になります。

momonga1119
質問者

お礼

お世話になってます。 回答ありがとうございます。 疑問が晴れました。ありがとうございました。

その他の回答 (1)

  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.1

> Aから外部のB(exe)を呼び出すときにAで取得した複数の引数をBに渡す方法はどうするのでしょうか? System.Diagnostics.Process.Startメソッドにコマンドライン引数も指定できるオーバーロードがあります。 http://msdn.microsoft.com/ja-jp/library/h6ak8zt5%28v=vs.110%29.aspx http://dobon.net/vb/dotnet/process/shell.html 'Imports System.Diagnostics Process.Start("SomeEXE.exe", "hoge.txt fuga.txt piyo.txt") 'SomeEXEの終了を待たない場合 Process.Start("SomeEXE.exe", "hoge.txt fuga.txt piyo.txt").WaitForExit() 'SomeEXEの終了まで待つ場合 > 受け取った引数を元にDBを検索し、ヒットしたファイルを開きたいのですが、その複数の引数を格納する構文はどういったものになるのでしょうか? 受け取り側もVB.NETで作っているということでよろしいでしょうか? それならこちらに有用な情報があります。 http://dobon.net/vb/dotnet/programing/commandline.html

momonga1119
質問者

お礼

ご回答ありがとうございます。 おかげさまで引数をB側(VB.NETで作ってます)で受け取る事ができました。 恐縮ですが、もうひとつご教示願いたいのですが...。 Private Sub Main(ByVal CmdArgs() As String) 'コマンドライン引数の表示 Dim cmd As String For Each cmd In CmdArgs このcmdに複数の引数が渡ってきましたが、 この引数を分割する方法はどうするのでしょうか? 受け取った引数が("SomeEXE.exe", "hoge.txt fuga.txt piyo.txt")となっていますが、 この"hoge.txt fuga.txt piyo.txt"をxとyといった変数に別々に格納したいのですが・・・。 xにhoge.txt fuga.txt yにpiyo.txt といった感じです。 質問に質問はルール違反?かもしれませんし、 基礎から勉強しろと言われそうですが、困っています。 よろしくお願いします。

関連するQ&A

  • URLでEXEを呼出した際の、引数の渡し方

    URLでVBのEXEを呼出しているのですが、引数を どのように渡したらよいか分かりません。 <A href="c:\test.exe?test.htm" target="">TEST</A> ?の後ろを文字列パラメータとして渡したいのですが、 どのように記述すればよいのでしょうか? また、VB側では、どのように受取ればよろしいのでしょうか? 知っている方教えてください

  • EXE間で同期をとりながらデーターを受け渡しする方法

    Windows2000上でVB6.0を使用してプログラミングをしています。 2つのEXE間で同期をとりながらデーターの受け渡しをしたいのですが どのようにすれば良いのか方法が分かりません。 具体的には、AというEXEからBというデーター検索用のEXEを起動して、 Bの検索結果をAに返したいのですが... AとBは同期をとっていたいので、 Bが起動している間はAの処理は止めておきたいです。 どなたか良い方法をご存知でないでしょうか? よろしくお願いします。

  • 【VC2008】実行ファイル(exe)に引数を渡すやり方

    タイトルの実行ファイル(仮にtest.exe)は、バッチファイルにします。 ------------------------------------------------ @echo off test.exe 引数1(文字列) 引数2(整数) ・・・ ------------------------------------------------ やりたい事は、上記の引数の testプロジェクト内での受け取り方です。 開発環境は、VC2008 の CLRコンソールアプリケーションです。 どなたかやり方をご存知の方がいらっしゃいましたら、ご教授の程よろしくお願いいたします。

  • VC++から引数付きexeファイルの実行

    タイトルの通り、VC++から外部ファイルを実行したいのですがどのような関数を使えばよいのでしょうか? exeファイルを実行中は親プロセスであるVCのプログラムの方を止めておきたいのです。 出来ればexeファイルは引数付きで実行したいと思いますので、よろしくお願いします。 開発環境はVisualStudio2005です。

  • bahsの引数について

    大変簡単な質問で恐縮なのですが、シェルスクリプトの引数(複数)を受け取り受けとったパスの中からファイル名だけを取り出すというのはどのようにするのでしょうか? a=$# b=$( basename $# ) echo $b こちらを実行すると引数の個数のみ表示されてしまいます。 そうではなくファイル名を個数分だけ表示さたいです。

  • svchost.exeはどんなものですか?

    svchost.exeとはどんなものですか?開発環境:VB、DBはoracleを使用したアプリケーションを使用中、急にsvchost.exeエラーがでました。何のエラーかどういうものなのか全然わかりません。どなたか至急教えてください。

  • アプリケーションAから外部アプリケーションBを

    アプリケーションAから外部アプリケーションBを 呼び出す処理。 Bのフォームを常に最前面にして、Aのフォームを操作できないようにしたいです。 ただしAにあるタイマーを止めないようにもしたいです。 そこで [C#] //ファイルを開いて終了まで待機する System.Diagnostics.Process p = System.Diagnostics.Process.Start("C:\\test.exe"); p.WaitForExit(); ※「test.exe」を外部アプリケーションBとする。 を使ったのですが、Aのタイマーが止まってしまいます。 何か良い方法はないでしょうか? 言語はC#です。

  • #!/bin/sh の次の行から複数のコマンド(./a.exe 引数)

    #!/bin/sh の次の行から複数のコマンド(./a.exe 引数)を入力して、実行する方法。 私はWindows上でCygwinを使用し、C言語のプログラミングを作成しています。 引数を1個つかったプログラムのファイル s.c があります。 #!/bin/sh の下にコマンドをいくつか並べ #!/bin/sh a.exe 0 a.exe 1   (←0,1,2は引数) a.exe 2 ... ↑のような形にして、1度に引数が0,1,2のそれぞれの時の実行結果をだしたいのですが どうすれば #!/bin/shの次の行にコマンドをうてるのでしょうか? 私の場合、まず $ cc s.c で「Enter」キーを押して次に $ #!/bin/sh   とうつのですが、この下の行に文字をうつ方法が分らず          「Enter」キーを押して次に $ ./a.exe 0   とうちます。 そうすると、引数が0のときの実行結果はでてきますが 私がやりたいように ./a.exe 0 ./a.exe 1 ./a.exe 2... の実行結果がいっぺんにだすことはできません。 $ #!/bin/sh の下の行にコマンドをうつ方法を教えて頂きたいです。 質問の文に誤りや分かりずらい点がある場合があるとは思いますが よろしくお願いいたします。

  • バッチファイルから直接db2コマンドに引数を持たせて実行したい

    バッチファイルより、得たデータを引数としてdb2コマンドに私、実行したいのですが、そのようなことはできるでしょうか。 (詳細) バッチファイルで、日付&時間を変数に格納します。これを、db2のテーブルにインポートしたい。 稚拙な質問で申し訳ありません。

  • VB .NETで作成したソフトが、他の端末動かない

    開発端末Aは、.net2005(vb)とInputMan for .NET 4.0Jがインストール済みです。 端末Bは、.net2005(vb)が入っていませんが、 .NET Framework2.0は、インストール済みです。 開発端末Aでは、実行ファイル(exe)を起動出来ます。 開発端末Aで作成した実行ファイル(exe)を端末Bで実行したが、アプリケーションエラー(Microsoft)になりました。 使用DBは、Oracle9i ODP.NETを使用 実行ファイルは複数ありますが、ボタンのみのexeは起動出来ましたがそれ以外ほとんどの実行ファイルは起動出来ません。 ビルド方法やFramework2.0など悪い点など確認事項など 何故動かないか考えられる事があれば教えてください。