• ベストアンサー

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では作成されていません。 どうか回答お願い致します。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

今作成しているプログラム(exe)で、GetCommandLineArgs を使って渡された引数を起動されたプログラムから利用できます。 >引き値を取り出すexeを指定しているのではないのでしょうか? コマンドラインには、起動されたプログラム自体のファイル名が含まれます。 >引き値を取り出すexeの指定はどこで行っているのでしょうか? 強いて言うなら、そのプログラムを起動しようとしたプログラムでしょう。起動されるプログラムはそれ自体なので、考える必要はないと思います。

gosutero
質問者

お礼

回答ありがとうございます。 自分の中でどこかで指定を行っていると勘違いしていました。 とてもわかりやすい説明ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • ppg-2
  • ベストアンサー率39% (77/193)
回答No.4

何か勘違いをされているようですね。 (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を認識する必要もなくどこから呼ばれたかは関係なく与えられた引数にしたがって処理されるということです。

gosutero
質問者

お礼

回答ありがとうございます。 既存のプログラムを作成した方と話して無事解決しました。皆さんありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • ppg-2
  • ベストアンサー率39% (77/193)
回答No.2

??? 引き値を取り出すexe、引き値を受け取るexeとは何でしょう。 コマンドライン引数はexeを起動する際に、起動側のexeに渡す引数ですよね。呼ぶ側と呼ばれる側のプライベートなやり取りですので、他のexeが認識できるものではないと思いますが・・・

gosutero
質問者

お礼

回答ありがとうございます。 >コマンドライン引数は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)
回答No.1

コマンドライン引数を使っているなら、データを送る側が送り先のプログラムを起動している事になるので、そちらのコードを調べる必要があるのでは。 引数(「引き値」よりはこっちのほうが一般的と思うので。)の渡し方は紳士協定みたいなものですから、必ずしもコマンドライン引数を使うとは限りません(RPCだったり、Windowsメッセージだったり色々あります)。 そのデータを送るプログラムを書いている作者と、インタフェース仕様について意識あわせ、あるいはドキュメントを作成してみては。

gosutero
質問者

お礼

回答ありがとうございます。 既に作成されているexeの場所は分かっています。 コマンドラインを使用した場合は引数をとってくるexeは指定できないのでしょうか?

gosutero
質問者

補足

既にできているexeはDelphiで作成されています。 コマンドボタンを押すとテキストボックスの中の値を引数として出力していることは分かっています。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • exeファイルをプログラムから操作する。

    お世話になります。 VisualStudio2019(C#またはVB)で下記を実装したいと思っています。 ①あるプログラム(1.exe)のフォーム内にいくつかある指定のボタンを押す。  ⇒ウィンドウを取得、ウィンドウハンドルを取得してボタン押下 ②①の操作でプログラム(2.exe)が起動する。 ③2.exeプログラムの複数あるテキストボックスの中から指定のテキストボックスに文字を入力  ⇒ウィンドウを取得、テキストボックスのウィンドウハンドルを取得してテキストに値をセット いろいろサイトを探したのですが、「まさにコレ」といったものがなく困っています。 もしご教授いただければ幸いです。 よろしくお願いいたします。

  • EXEを呼び出す方法

    VBのプログラムの中からEXEを実行する方法が分かりません。 例えば 既に作成済みのTest.exeがあります で新しいシステムにTest.exeを組み込みたいのです。 ボタンを押したらTest.exeが実行される方法を教えてください。

  • 既に退職した社員が作成したソースプログラムの無いEXE形式のプログラム

    既に退職した社員が作成したソースプログラムの無いEXE形式のプログラムの表示 文字などを一部変更したいと思い、リソースエディタを探しトライしてみましたが、タブ 切り替えの画面をはじめほとんど修正不可能でした。(VBで開発したようです。) そこで、もう一つの案としてプログラムと同じ画面を作成し、オーバーラップさせたら どうかと思っています。 この場合Windowサイズとかは全く同じにし、変更する箇所のみ(例えばボタンとか ラベル、テキストボックス等)オーバーラップさせた文字を表示させ、元のプログラム 画面を透過してボタン操作等を損なわないようにしたいと考えたのですが、そのよう な機能のツール、あるいは他に名案がありましたらアドバイスをお願いします。

  • 使用者の入力方法について

    VB初心者ですが、VB6.0を使っています。 例えばテキストボックスの内容を 使用者から変更不能にするとき、 例えばtxt~.Enable=falseで指定できると思いますが、 実行ファイル(exeファイル)を作成した後、 1回目に使用者がその実行ファイルを起動すると、 あるフォームにテキストボックスとチェックボックスとボタンが現れ、 その使用者がテキストボックスに書き込み、チェックボックスにチェックしてボタンを押せば、 その後その実行ファイルを終了した後、いくら起動してもテキストボックスの内容を変更不能にしたいのですができるのでしょうか? つまり、ワンタイム入力?とでもいうのでしょうか? 一回ユーザが起動時に入力すれば、その後、実行ファイルを再度起動してもユーザ変更できないようにすることはできるでしょうか? 以上、ご教示ください。 よろしくお願いいたします。

  • データの保存方法について

    VB.netについての質問です。 フォームにテキストボックスとコンボボックスとボタンが取り付けられている状態で、ボタンを押すとテキストボックスとコンボボックスのデータを、指定したフォルダにテキストファイルで保存させる、というプログラムは可能でしょうか? 保存形式はテキストファイル以外でも構いません。 よろしくお願いします。

  • ActiveX EXEとタイマーとVB

    いつもお世話になってます。 さっそく質問ですが、 ActiveX EXE側にタイマーとテキストボックスを持っています。 VB側のフォームにテキストボックスがあります。 VBからActiveX EXEを起動させ、決まった時間(例えば5秒おき)にVBのテキストボックスに ある文字を表示させる、ということがしたいです。 条件として、 VB側の動きは、 (1)最初のActiveXを起動 (2)ActiveXのSetとNothingだけしかしない                   しかしません。 なので、ActiveXからは「RaiseEvents」はしません。 ActiveX側で、タイマーイベント部分に、 ActiveXのフォームのテキストボックス.text = "文字" set △△ = ActiveXのフォームのテキストボックス (△△は、ActiveXのフォームのテキストボックスとしてセットされています。) のように、プログラムしてみたのですが、 VB側のテキストボックスに表示できませんでした。 尚、VB側は、ActiveX以外の処理があるので、途中からActiveXを起動させることになります。 この条件で、VBのテキストボックスに文字を表示させることはできますか? もしできるとしたら、どのような方法がありますか?? まだネットや本で調べ途中なので、もし何か参考ページがありましたら教えていただきたいです。 よろしくお願いします。

  • VBのフォームでD&Dを有効にする

    VB2013 expressです。 VBで作成したフォーム上にファイルをD&Dすることで フルパス名を取得するプログラムを書きたいのですが http://dobon.net/vb/dotnet/control/droppedfile.html このページにのように、テキストボックス上に D&Dすればうまくいくものは見つかったのですが、 フォーム全体で受け付けてくれるものが見つかりません。 どのように改良すれば良いか教えてください。

  • VB6での時間計算について

    VB6での時間計算について VB6で時間計算のプログラムを作成しています。 しかし、行き詰ってしまいました。 どなたかご教授願います。 3時50分から10時20分は何時間分経っているかという計算式で悩んでいます。 時間を打ち込み用にテキストボックスを4つ作ってまして、一つ目に「3」、二つ目に「50」、三つ目に「10」、四つ目に「20」という風に打ち込みコマンドボタンを押すと6.5時間と算出されテキストボックスかラベルに表示されるといったことをするにはどうしたらいいのでしょうか?

  • Matlabを実行しやすくする方法

    Matlabで作成したプログラムを他人に渡す場合や、 過去に自分が作成したプログラムを後から実行したい場合など どこの変数がパラメータになっているか分かりにくい場合がよくあります。 VBAとかVBみたいに、ボタンとかテキストボックスとかを ウインドウ上に作成して、後から実行しやすい方法ってないのでしょうか? あるいはmatlabウインドウ上で指定したパラメータしか変更できないように設定することってできますでしょうか?

  • exeファイルへパスワードを付加する方法

    VBで作成したプログラムにて、自己解凍のexeファイルを作成しているのですが、セキュリティのためファイルにパスワードをかけたいと考えております。 VBからexeファイルにパスワードをかける方法orDLLはありますでしょうか? よろしくお願いいたします。