- ベストアンサー
exe間での引き値の受け取り方法
VB.net 2003を使用しています。 テキストボックス2つとコマンドボタンが1つある画面(exe)があります。コマンドボタンを押すと引き値を今作成しているプログラム(exe)に送るプログラムがあるのですが、引き値の受け取り方法がわかりません。 検索などで調べたところコマンドラインなどを使用すればよいことがわかったのですが、使用方法がよくわかりません。 http://dobon.net/vb/dotnet/programing/commandline.html 上記のサイトを参考に見ているのですが、System.Environment.CommandLineで引き値を取り出すexeを指定しているのではないのでしょうか?メッセージボックスなどで値を調べたところ引き値を受け取るexe(このコードが書いてあるexe)が指定されているみたいなのですが、引き値を取り出すexeの指定はどこで行っているのでしょうか? ちなみにテキストボックス2つとコマンドボタンが1つある画面(exe)は他の人が作成しており、VBでは作成されていません。 どうか回答お願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
今作成しているプログラム(exe)で、GetCommandLineArgs を使って渡された引数を起動されたプログラムから利用できます。 >引き値を取り出すexeを指定しているのではないのでしょうか? コマンドラインには、起動されたプログラム自体のファイル名が含まれます。 >引き値を取り出すexeの指定はどこで行っているのでしょうか? 強いて言うなら、そのプログラムを起動しようとしたプログラムでしょう。起動されるプログラムはそれ自体なので、考える必要はないと思います。
その他の回答 (3)
- ppg-2
- ベストアンサー率39% (77/193)
何か勘違いをされているようですね。 (1)a.exe sub main() shell "b.exe hello" end sub (2)b.exe sub main Dim cmds() As String cmds = System.Environment.GetCommandLineArgs() Dim cmd As String For Each cmd In cmds Console.WriteLine(cmd) Next end sub ここでa.exeを実行するとコンソールに "a.exe" "hello" と表示されます。 つまり外部モジュールを起動するshell関数実行時にb.exe内の空間に引数が強制的に渡されるということです。ですからb.exeからa.exeを認識する必要もなくどこから呼ばれたかは関係なく与えられた引数にしたがって処理されるということです。
お礼
回答ありがとうございます。 既存のプログラムを作成した方と話して無事解決しました。皆さんありがとうございました。
- ppg-2
- ベストアンサー率39% (77/193)
??? 引き値を取り出すexe、引き値を受け取るexeとは何でしょう。 コマンドライン引数はexeを起動する際に、起動側のexeに渡す引数ですよね。呼ぶ側と呼ばれる側のプライベートなやり取りですので、他のexeが認識できるものではないと思いますが・・・
お礼
回答ありがとうございます。 >コマンドライン引数はexeを起動する際に、起動側のexeに渡す引数ですよね。呼ぶ側と呼ばれる側のプライベートなやり取りですので、他のexeが認識できるものではないと思いますが・・ それは知りませんでした。ということは URL内の 'コマンドライン引数の表示 Console.WriteLine(System.Environment.CommandLine) 'コマンドラインを配列で取得する Dim cmds() As String cmds = System.Environment.GetCommandLineArgs() Dim cmd As String For Each cmd In cmds Console.WriteLine(cmd) Next '出力例 '"C:\VB TEST\VB.exe" "C:\VB TEST\1.bmp" "C:\VB TEST\2.bmp" "C:\VB TEST\3.bmp" 'C:\VB TEST\VB.exe 'C:\VB TEST\1.bmp 'C:\VB TEST\2.bmp 'C:\VB TEST\3.bmp は呼ぶ側と呼ばれる側をどこで指定しているのでしょうか?
- osamuy
- ベストアンサー率42% (1231/2878)
コマンドライン引数を使っているなら、データを送る側が送り先のプログラムを起動している事になるので、そちらのコードを調べる必要があるのでは。 引数(「引き値」よりはこっちのほうが一般的と思うので。)の渡し方は紳士協定みたいなものですから、必ずしもコマンドライン引数を使うとは限りません(RPCだったり、Windowsメッセージだったり色々あります)。 そのデータを送るプログラムを書いている作者と、インタフェース仕様について意識あわせ、あるいはドキュメントを作成してみては。
お礼
回答ありがとうございます。 既に作成されているexeの場所は分かっています。 コマンドラインを使用した場合は引数をとってくるexeは指定できないのでしょうか?
補足
既にできているexeはDelphiで作成されています。 コマンドボタンを押すとテキストボックスの中の値を引数として出力していることは分かっています。
お礼
回答ありがとうございます。 自分の中でどこかで指定を行っていると勘違いしていました。 とてもわかりやすい説明ありがとうございます。