[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2006/01/30(Mon) 18:18
投稿者名:とんかち
Eメール:
URL :
タイトル:
Sell関数でコマンドライン引数を指定する方法
Sell関数でコマンドライン引数を指定してExeを実行すること
出来ますでしょうか?

以上、よろしくお願いします。

投稿時間:2006/01/30(Mon) 20:19
投稿者名:ダンボ
URL :
タイトル:
Re: Sell関数でコマンドライン引数を指定する方法
> Sell関数でコマンドライン引数を指定してExeを実行すること

Sell関数ではできませんねえ。Shell関数ならば、Googleで検索すれば
hhttp://homepage1.nifty.com/rucio/main/technique/Function.htm

キーワードは「Shell関数 コマンドライン 引数」

投稿時間:2006/01/31(Tue) 11:03
投稿者名:とんかち
Eメール:
URL :
タイトル:
Re^2: Sell関数でコマンドライン引数を指定する方法
> > Sell関数でコマンドライン引数を指定してExeを実行すること
>
> Sell関数ではできませんねえ。Shell関数ならば、Googleで検索すれば
> hhttp://homepage1.nifty.com/rucio/main/technique/Function.htm
>
> キーワードは「Shell関数 コマンドライン 引数」
お返事有難うございます!!!
あれ、変ですね。
上のホームページには
Exeファイルの後ろに半角スペースを入れてコマンドライン引数を
渡す方法が書いてあって私もその方法をとっているのですが
出来ません!
ね是でしょうか。。。

投稿時間:2006/01/30(Mon) 20:49
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: Sell関数でコマンドライン引数を指定する方法
まずはここの[他のプロセスとの連携]をご覧下さい。

投稿時間:2006/01/31(Tue) 20:05
投稿者名:とんかち
Eメール:
URL :
タイトル:
Re^2: Sell関数でコマンドライン引数を指定する方法
ここで書かれているように、
Shell("Exeファイルへのパス コマンドライン引数")

としてるのに出来ません。
Exeファイルへのパスとコマンドライン引数の間は半角スペースですよね!

以上、よろしくお願いします。

投稿時間:2006/01/31(Tue) 20:30
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: Sell関数でコマンドライン引数を指定する方法
> Shell("Exeファイルへのパス コマンドライン引数")

実際に使ったコードをペーストして下さい。

上記だけでは判断できません。

>としてるのに出来ません。

結果、どのようになるのですか?


----------------------------------------
下記コードを作って c:\test.exe としてEXE を作って保存してください。

Private Sub Form_Load()
    MsgBox Command()
End Sub


========================================
次のコードを使って c:\test.EXE を起動して見てください。

Private Sub Command1_Click()
    Shell "c:\test.exe こんばんは", vbNormalFocus
End Sub

投稿時間:2006/02/01(Wed) 00:05
投稿者名:ダンボ
URL :
タイトル:
Re^3: Sell関数でコマンドライン引数を指定する方法
> ここで書かれているように、
> Shell("Exeファイルへのパス コマンドライン引数")
> としてるのに出来ません。

・Exeファイルへのパスにスペースが含まれていませんか?
・Exeファイルへのパスの文字列がむちゃくちゃ長くないか?

投稿時間:2006/02/01(Wed) 10:10
投稿者名:とんかち
Eメール:
URL :
タイトル:
Re^4: Sell関数でコマンドライン引数を指定する方法
おはようございます!

Shell "C:\dividesdata●●●●\Debug\dividesdata.exe C:\EG2000_Merge\ICM_DISP\●●●●出
力デー
タ.txt"

●の部分は全角漢字です。
お仕事で使うプログラムなので一部名称は伏せさせて頂きまが文字数は同じです。
スペースも含まれてません。

dividesdata.exeはC言語で作られたプログラムです。
コマンドライン引数で指定された●●●●出力データ.txtの
内容を編集する感じのプログラムです。

投稿時間:2006/02/01(Wed) 10:57
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: Sell関数でコマンドライン引数を指定する方法
> Shell "C:\dividesdata●●●●\Debug\dividesdata.exe C:\EG2000_Merge\ICM_DISP\●●●●出
> 力デー
> タ.txt"

上記でエラーはなにも出ていないのですか?
dividesdata.exe はその引数をサポートしているのですか?
EXE は起動できているのですか?

起動できているなら、ファイルをルートフォルダー(C:\●●●●出力データ.txt)に
おいて試して見て下さい。
又、引数の部分を変数に変えて試して見て下さい。

それでもだめなら、一度パスの短い半角のフォルダで試して見て下さい。
Shell "C:\test\dividesdata.exe C:\test\test.txt" のように。
それと、No.5635 で投稿したプログラムを前記のフォルダで試して見て下さい。

投稿時間:2006/02/01(Wed) 12:50
投稿者名:とんかち
Eメール:
URL :
タイトル:
Re^6: Sell関数でコマンドライン引数を指定する方法
W = "C:\d\dividesdata.exe C:\KyoutuDataW.txt"
r = Shell(W)

パスを短くして試しましたが無理でした。
戻り値は544です。

尚dividesdata.exeへのショートカットを作成してコマンドライン引数を指定して
起動した場合は正常に動きます。

投稿時間:2006/02/01(Wed) 13:09
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^7: Sell関数でコマンドライン引数を指定する方法
質問したことに答えて下さい。
>パスを短くして試しましたが無理でした。
どう無理だったのですか?

EXE や ファイルを 指定のパスに置いて試しましたか?

ファイル名を指定して実行  で C:\d\dividesdata.exe C:\KyoutuDataW.txt で
動きますか? 動かないなら指定の仕方が間違っているのです。

投稿時間:2006/02/01(Wed) 14:56
投稿者名:とんかち
Eメール:
URL :
タイトル:
Re^8: Sell関数でコマンドライン引数を指定する方法
たびたびすいません。

> どう無理だったのですか?
編集結果としてTxtファイルが出力されるはずなのですが出力されません。
(起動できてません)
戻り値として544が返ります。

> EXE や ファイルを 指定のパスに置いて試しましたか?
はい。

> ファイル名を指定して実行  で C:\d\dividesdata.exe C:\KyoutuDataW.txt で
> 動きますか? 動かないなら指定の仕方が間違っているのです。
動きました。

投稿時間:2006/02/01(Wed) 15:10
投稿者名:ダンボ
URL :
タイトル:
Re^9: Sell関数でコマンドライン
> 編集結果としてTxtファイルが出力されるはずなのですが出力されません。
> (起動できてません)
> 戻り値として544が返ります。

Shell関数の戻り値ってタスクIDでしょ。ゼロでなければ正常終了。。ってことはタスク生成されてい
る。
留意事項:Shell関数は非同期だから戻ってきた後にdividesdata.exeが動いている可能性が高い。
そこを誤解していないかな。

投稿時間:2006/02/01(Wed) 16:13
投稿者名:とんかち
Eメール:
URL :
タイトル:
Re^10: Sell関数でコマンドライン
> Shell関数の戻り値ってタスクIDでしょ。ゼロでなければ正常終了。。ってことはタスク生成されて

> る。
> 留意事項:Shell関数は非同期だから戻ってきた後にdividesdata.exeが動いている可能性が高い。
> そこを誤解していないかな。
ごめんなさい、
おっしゃってる意味がよく分からないのですが、dividesdata.exe側の問題って事ですか?
ファイル名を実行ってやれば、正常に処理されるのですが・・・・。

投稿時間:2006/02/01(Wed) 16:23
投稿者名:ダンボ
URL :
タイトル:
Re^11: Sell関数で
「Shell関数から戻ってきた時点ではdividesdata.exeは動作完了していない」と言っています。

Shell関数は単にdividesdata.exeを起動する準備をさせただけであり、実際にdividesdata.exeが
動き出して処理完了するのはいつになるかわからない。確実にdividesdata.exeの処理完了を待つには
Shell関数の戻り値のタスクIDを監視しなければならない。(または作成Fileの監視などね)

#自信が無くなって、HELPを見直したのだが、記述があいまいかな。
「実行可能プログラムを実行し、実行が完了するとプログラムのタスク ID を示すバリアント型 (内部処理形式 Double の Variant) の値を返します。プログラムの実行に問題が発生した場合は、0 を返します。」
「メモ 既定の設定では、Shell 関数はプログラムを非同期的に実行します。したがって、Shell 関数を使用して実行を開始したプログラムが終了しなくても、Shell 関数の次のステートメントは実行されます。

投稿時間:2006/02/01(Wed) 16:17
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^9: Sell関数でコマンドライン
話が矛盾しているから、ここで答えた事と実際にやっている事が違うのでは。
問題を特定する為にも、指定しているパスの部分に問題があるのか?
引数のファイルの指定の仕方に問題があるのか?
そのソフトに問題があるのかを見極めてください。
その為の回答をしていたのですが、話が、こんがらがっているようで、今一度
原点に返って整理して下さい。

投稿時間:2006/02/01(Wed) 17:13
投稿者名:ぽんたつ
Eメール:
URL :
タイトル:
Re^8: Sell関数でコマンドライン
いつも参考にさせて頂いております。

私も同じ所で引っかかった覚えがあります。
引数の渡し方を
Shell(exeまでのpath & " " & "コマンド引数", vbNormalFocus)
としてみてください。

一度
>Shell("Exeファイルへのパス コマンドライン引数")
のExeファイルへのパス コマンドライン引数の中身を
イミディエイトで確認してみたほうがいいかも知れません。

投稿時間:2006/02/01(Wed) 17:28
投稿者名:とんかち
Eメール:
URL :
タイトル:
Re^9: Sell関数でコマンドライン
ぽんたつ様の方法で試したところ
解決しました!

ありがとうございました!!!

みなさま大変お騒がせしました。

投稿時間:2006/02/01(Wed) 17:43
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^10: Sell関数でコマンドライン
>又、引数の部分を変数に変えて試して見て下さい。

って書いていたのに。

投稿時間:2006/02/01(Wed) 17:56
投稿者名:ダンボ
URL :
タイトル:
Re^10: Sell関数でコマンドライン
> ぽんたつ様の方法で試したところ

結局どっちだったのかな?
・vbNormalFocusの指定の有無
・Exeファイルへのパス コマンドライン引数の中身の記入誤り

投稿時間:2006/02/01(Wed) 18:28
投稿者名:ぽんたつ
Eメール:
URL :
タイトル:
Re^11: Sell関数で
> > ぽんたつ様の方法で試したところ
>
> 結局どっちだったのかな?
> ・vbNormalFocusの指定の有無
> ・Exeファイルへのパス コマンドライン引数の中身の記入誤り
私の経験(Win2000,VB6)からですが、
>Shell("Exeファイルへのパス コマンドライン引数")
のように直接記入すると、(イミディエイトで確認したところ)
パスとコマンドライン引数の間の半角が無視されてくっついてしまいました。

>花ちゃん様
>又、引数の部分を変数に変えて試して見て下さい。
の方法でも上手く半角が入ってました。

投稿時間:2006/02/01(Wed) 19:22
投稿者名:とんかち
Eメール:
URL :
タイトル:
Re^12: Sell関数で
何度もすみません。

vbNormalFocusがポイントだったみたいです。
vbNormalFocusにすればパスを変数に代入しなくとも、
正しく処理できました。

言い忘れましたが、
起動したExeは画面がありません。
画面が無いものに対してFocusをセットしようとしたりしたの
が問題だったのかな・・・・・