团队,
我会很感激你在这方面的帮助,
我的项目背景:我有一个可执行文件,例如 abcd.exe,它实际上是一种服务器,它在 MS DOS 窗口中自行打开,一旦启动,它就会继续运行。如前所述,由于它是一台服务器,它会不断记录一些日志跟踪,并不断在 DOS 窗口中逐行添加新行。该服务器需要一些参数才能启动,所以这里的参数是配置文件的路径,其中保存了所有配置详细信息。所以,要启动这个服务器,我需要在命令提示符中提供,
*开始 > 运行 > CMD
abdc.exe -lookup "C:\MyServer\Bin\designConfig.properties"
为避免手动步骤,我创建了批处理文件,例如 abcd.bat 并带有以下几行
“标题:我的服务器 - 节点 1234(服务器) ”
abdc.exe -lookup "C:\MyServer\Bin\designConfig.properties"
我的机器和规格
- 上面提到的 abdc.exe 文件是一个 64 位服务器。我的操作系统: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 开发的,我相信它不是一个控制台应用程序。
谢谢,普拉尚特