チーム、
これについてあなたの助けをいただければ幸いです。
プロジェクトの背景: abcd.exe などの実行可能ファイルがあります。これは実際には、MS DOS ウィンドウで自分自身を開き、一度起動すると実行を継続する一種のサーバーです。前述のように、これはサーバーであるため、いくつかのログ トレースを記録し続け、DOS ウィンドウに新しい行を 1 つずつ追加し続けます。このサーバーを起動するにはいくつかのパラメーターが必要なので、ここでのパラメーターは、すべての構成の詳細が保存されている構成ファイルのパスです。したがって、このサーバーを起動するには、コマンド プロンプトで指定する必要があります。
*スタート > ファイル名を指定して実行 > CMD
abdc.exe -lookup "C:\MyServer\Bin\designConfig.properties"
手動の手順を避けるために、以下の行でabcd.batなどのバッチファイルを作成しました
"タイトル: 私のサーバー - ノード 1234 (サーバー) "
abdc.exe -lookup "C:\MyServer\Bin\designConfig.properties"
私のマシンと仕様
- 上記の abdc.exe ファイルは 64 ビット サーバーです。私の OS: Windows 7 64 ビット プラットフォーム: VB Visual Studio 2012 または MS Access VBA
私の要件
これで、VB フォーム、複数行のテキスト ボックスとボタンを作成しました。私が欲しい、
- そのボタンをクリックすると、実行可能ファイルまたはバッチ ファイルが検索され、パラメーターを受け入れることで abcd.exe サーバー プログラムが起動されます。(以下のコードを使用してこれで完了です)
=======================
Dim abc As New Process
Dim abcinfo As New System.Diagnostics.ProcessStartInfo
abcinfo.FileName = "C:\ABCD\abdc.bat""
abcinfo.RedirectStandardOutput = True
abcinfo.RedirectStandardError = True
abcinfo.UseShellExecute = False
abcinfo.ErrorDialog = False
abc.StartInfo = abcinfo
abc.Start()
Dim abclog As System.IO.StreamReader = abc.StandardError
abc.BeginOutputReadLine()
TextBox1.Text = abclog.ReadToEnd()
abc.WaitForExit()
=======================
これにより、実行可能ファイル、つまりサーバーが開きますが、CMD 画面が空白として表示され、テキストボックスの詳細を確認するために閉じました。閉じると、テキストボックスに、閉じたばかりの ABC サーバーの内容が表示されます。コンテンツは取得できますが、現在サーバーが稼働していません!!
したがって、[サーバーの開始]ボタンをクリックすると、(a) exeプログラム、つまりサーバーが起動し、(b) ウィンドウが非表示になります(使用するdosウィンドウはユーザーに表示されず、タスクバーで最小化されるべきではありません) .) (c) その DOS ウィンドウの内容をキャプチャし、フォームのテキスト ボックスに表示します (d) 最も重要なことは、新しいトレースがサーバー画面に記録されるたびに、abc サーバーの内容を更新することです。つまり、DOS 画面に新しい行が追加されます。 .
基本的に、私はこのサーバー インスタンスの複数のインスタンスを持ち、ログをチェックするためにすべてのインスタンスをユーザーに見せたくありません。リストボックスから特定の abc サーバー インスタンスを選択すると、関連する DOS 実行可能ウィンドウのライブ コンテンツがテキスト ボックスに表示されます。
多くのスレッドを検索しましたが、答えが見つかりませんでした。どんな助けでも大歓迎です!!!
PS: このサーバーは C で開発されており、コンソール アプリケーションではないと思います。
ありがとう、プラシャント