いつもお世話になっております。
コマンドプロンプトから作成したEXEをたたいて処理をしたいのですが、
引数の取得はCommand関数で取得できるのはわかったのですが、
逆にコマンドプロンプトに指定した文字列を表示したい場合は
どうすればよいのでしょうか?
ご教授お願いします。
ゴリ押しするならAllocConsoleなど、コンソールを扱うWinAPIを見ていってください。
何とかなるはずです。
また、VB.NETならコンソールアプリケーションを作ることが出来たはずです。
VB6でないのならば試してみてください。
ガッさん早急な回答ありがとうございます。
開発言語を記載し忘れました。VB6.0です。
AllocConsole APIを調べてみます。
#ゴリ押ししかないのか。。。。
AllocConsoleでは別Windowのコマンドプロンプトが起動されてしまうようです。
http://madia.world.coocan.jp/vb/vb_bbs2/200311_03110088.html
こちらの方と同じようなやりかたをしたいのですが、
ご教授お願いします。
hmm・・・
こちらは参考になるでしょうか?
http://madia.world.coocan.jp/cgi-bin/DelphiBBS/wwwlng.cgi?print+200311/03110004.txt
ググってみました
http://www.google.co.jp/search?complete=1&hl=ja&q=vb6+%E6%A8%99%E6%BA%96%E5%87%BA%E5%8A%9B&lr=
とりあえず、起動したコマンドプロンプトに出力するのは難しい(無理?)な感じがします。
手元の VB6 + WinXP 環境では、下記のソースを
=======
C:\>Project1 | more
=======
というコマンドで実行させることで、標準出力に吐く事ができました。
Private Sub Command1_Click()
Dim FSO As Scripting.FileSystemObject
Set FSO = New Scripting.FileSystemObject
Dim Stm As Scripting.TextStream
On Error Resume Next
Set Stm = FSO.GetStandardStream(StdOut, False)
If Err.Number <> 0 Then
MsgBox "標準出力を開けません。" & vbCrLf & _
CStr(Err.Number) & ":" & Err.Description, _
vbExclamation
Else
Stm.Write Text1.Text
Stm.Close
End If
End Sub
魔界の仮面弁士さん
サンプルコードまで記載して頂き本当にありがとうございます。
わがままを言って申し訳ないのですが、moreは無しで標準出力は
ガッさんがおっしゃているようにできないのでしょうか。
------イメージ------
C:\>
C:\>Project.exe
Project.exe -i [filePath]
-o [logFilePath]
C:\>
---------------------
ホストがVB6のままは無理じゃないかな?ということなんですが、
魔界の仮面弁士さんのような方法なら可能ということです。
(つまりホストをVB6ではなくコンソールベースのものにすると簡単)
魔界の仮面弁士さんの方法を応用してバッチファイルで囲ってしまうとか、
VBScript側でActiveXEXEにしたアプリケーションを起動してみるとかがありますね。
rem バッチファイルで囲ってしまう方法
rem ----Project1.bat
@echo off
Project1.exe | more
このようなバッチファイルを作れって魔界の仮面弁士さんのアプリケーションを同ディレクトリに配置すれば
アプリケーションの終了と同時に出力されるはずです。
'VB2005か素直にVBScriptにでもしたほうがいいような気もしますが
Project1.exeに対してLINK.EXEを実行して、
コンソールアプリとして再リンクしてあげれば、moreは不要でした。
(WinXPProSP2+VB6.0SP6)
Sub Main()
Dim FSO As Scripting.FileSystemObject
Set FSO = New Scripting.FileSystemObject
Dim Stm As Scripting.TextStream
On Error Resume Next
Set Stm = FSO.GetStandardStream(StdOut, False)
If Err.Number <> 0 Then
MsgBox "標準出力を開けません。" & vbCrLf & _
CStr(Err.Number) & ":" & Err.Description, _
vbExclamation
Else
Stm.Write "Moge ..."
Stm.Close
End If
End Sub
"C:\Program Files\Microsoft Visual Studio\VB98\link.exe" /EDIT /SUBSYSTEM:CONSOLE Project1.exe
http://www.xaprb.com/blog/2005/10/14/how-to-create-a-vb6-console-program/
返信が遅くなって申し訳ありません。
魔界の仮面弁士さんのサンプルにもげさんにおっしゃたリンカの方法で
うまく実装できました。
ガッさん、魔界の仮面弁士さん、もげさんありがとうございました。
| ツイート |
|