アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になります。

タイトルにある通りです。
VBAより実行したDOSコマンドの実行結果を、tailコマンドのように、フォーム(テキスト部品など)に出力させたいと考えています。

一度実行結果をファイルへ保存してそれをフォームへ出力させる、というのではなく、あくまでリアルタイムで表示する、ということは可能でしょうか?

よろしくお願いします。

A 回答 (4件)

回答番号:No.1の続きになりますが(こんなレスの付け方でいいのか?)



1. 標準入力から読み込んだ文字列を指定WindowへSendMessageで送信するプロセスを作成。
2. VBAのユーザフォームをサブクラス化してハンドラ作成。(受信文字列をテキストボックスへ追加)
3. VBAから実行するコマンド文字列を、送信プロセスにリダイレクトするように作成して実行。

で、できるような気がしますが、どこがわかりませんか?
回答3にもあるように、
>VBAでやる範疇ではないでしょう。
が全てのような。
    • good
    • 0

VBAでやる範疇ではないでしょう。


良くわかった人が、APIなど使えば出来るのかもしれないが、そんな回答を丸写ししてでも、課題を達成したいですか。
APIの関連するレベルの質問は本質問コーナーの範囲を超えているーー
方法論に注文(Dosコマンド利用)つけず、全般的にやりたいことを質問に表現して見ては。
あるいは、ひょっとしてVBScriptなどでやれる場合かも知れない。
ーー
質問者の場合と言うのではないが、十分な技量がないのに、「他ソフトとの連携」などの質問が結構有るが、概して難しいものだと思う。
本やWEBで情報も少なく、自分が長期に渉って情報を漁り、背景・基礎知識も含めて、勉強する類のものと思う。
    • good
    • 0

WSHを使っていいならば



Dim oWShell as Object, oWExec as Object
dim ss as String
Set oWShell = CreateObject("WScript.Shell")
Set oWExec = oWShell.Exec( "実行するコマンド" )
do
  ss = oWExec.StdOut.ReadLine()
  TextBox1.Text = TextBox1.Text & ss & vbCrLf
Loop while oWExec.StdOut.AtEndOfStream <> True
set oWExec = Nothing
Set oWShell = Nothing

といった具合で出来そうです

ただし oWShell.Execで起動したDOS窓側の出力はされませんが ・・・
DOS窓側へも出力したいとなると パイプ処理などが必要になりそうです
    • good
    • 0

CreatePipe, CreateProcessのWin32APIを使って、cmdの標準出力のパイプをReadするようにすれば取得できると思いますが、リアルタイムを非同期で動かすにはVBAではちょっと・・・



標準入力を指定WindowsへSend/Postするプロセスを別に作って、cmdの標準出力のパイプをそのプロセスの入力に繋いで起動するのがいいような気がす。
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

しかし内容がちょっと高度すぎますね。
もう少し噛み砕いて(具体的に)説明いただけるとうれしいのですが。。。

お手数ですがご教授願えませんか。

お礼日時:2009/06/04 21:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!