■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#22478-0他EXE起動時の引数匿名224782001-08-17(金) 10:18
     #22480-0RE#22478:他EXE起動時の引数レベル112001-08-17(金) 10:31
     #22481-0RE#22478:他EXE起動時の引数せつら2001-08-17(金) 10:34
     #22483-0RE#22481&#22478:他EXE起動時の引数匿名224832001-08-17(金) 11:15
     #22484-0RE#22480:他EXE起動時の引数Dental2001-08-17(金) 11:34
     #22485-0RE#22484:他EXE起動時の引数匿名224852001-08-17(金) 20:24
#22478-0
他EXE起動時の引数
今プログラムAからプログラムBを起動させる処理を作っています。
SHELL関数を使い呼び出していたのですが、
プログラムAから情報をもっていき
その情報によってプログラムBの開くときの値を調節したいのですが
引数を持っていけるような処理はどのようにして作ればよいのですか?
よろしくお願いします。
#22480-0
RE#22478:他EXE起動時の引数
> 今プログラムAからプログラムBを起動させる処理を作っています。
> SHELL関数を使い呼び出していたのですが、
> プログラムAから情報をもっていき
> その情報によってプログラムBの開くときの値を調節したいのですが
> 引数を持っていけるような処理はどのようにして作ればよいのですか?

引数の送り側はShellで呼び出すEXE名の後ろにスペースを一つ空けて送りたい引数文字列を記述します。
引数の受け取り側はCommand関数を使い、それを受け取ります。

#文字列1行分のやり取りしか出来ないので、複数のデータを送るときは、","等で区切って
#送ると良いでしょう。VB6の場合Join関数とSplit関数を使うと便利です。
#22481-0
RE#22478:他EXE起動時の引数
EXE 名の後ろに、スペースで区切って、引数文字列を書くだけですが…?

Private Sub Command1_Click()
    Shell "notepad.exe c:\config.sys", vbNormalFocus
End Sub

起動される側を VB で作成する場合、Command 関数で渡された文字列を得ることができますよ。
#22483-0
RE#22481&#22478:他EXE起動時の引数
早速の回答ありがとうございました。
Command関数との併用で実現できました。
レベル11さん
せつらさん
ありがとうございました。
#22484-0
RE#22480:他EXE起動時の引数
> #文字列1行分のやり取りしか出来ないので、複数のデータを送るときは、","等で区切って

単一行のやりとりしか出来ないのは、『起動させる側の制限』であって、VBの制限ではありません。
VBのShell & Command 自体は、複数行のデータでも、問題なく送受信できるようになっています。
# それどころか、バイナリデータでも渡せるみたいです。(ちゃんと調べたわけじゃないけど)

起動させる側の仕様による制限の例としては、スタートメニューの
「ファイル名を指定して実行」などであれば、単一行しか渡せないとか、
DOS窓であれば、(バッファの指定にも依りますが)255バイト上限になる、などです。

なお、Win95 GUI等においては、実行ファイルのパスも含めて32767文字までなら渡す事が可能である事を確認しています。
#22485-0
RE#22484:他EXE起動時の引数
実験をしてみました。

Sub Main()
    Dim ret As Long
    Dim cmd As String
    cmd = Command()
    ret = MsgBox(Len(cmd) & " 続けますか?", vbYesNo)
    If ret = vbNo Then Exit Sub
    If cmd = "" Then
        cmd = "*"
    Else
        cmd = cmd & cmd
    End If
    Shell App.EXEName & ".exe " & cmd, vbNormalFocus
End Sub

「262144 続けますか?」の後、不正な処理で落ちました(Win95+160M)。
文字列の内容の検証はしてませんが、、、。
このページと関連する記事:
#19765-0起動時の引数の受け取り方?2001-03-23(金) 16:29
#21-0Form_Loadイベントに引数 or 起動パラメータ受取2002-01-24(木) 00:41
#12645-0commandですでに起動しているものに2000-01-05(水) 14:47
#33881-0二重起動防止とcommandの処理2000-11-21(火) 23:48
#18366-0ファイルの複数選択のしかた2001-10-21(日) 11:57
#16763-0Command()関数について2001-07-02(月) 19:22
#23049-0ExcelとのOLEオートメーション2001-09-10(月) 09:14
#10811-0別プロジェクトからの引数の受け取り方1999-12-02(木) 11:32
#1294-1コマンドラインについて1999-07-13(火) 12:01
#6971-1コマンドラインの引数について2002-04-16(火) 05:06
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)