这通常是通过编写一个批处理程序,来完成,
例如:
==== start.bat ===
set HOME_FOLDER='c:\app'
set TEMP_FOLDER='c:\temp'
myapp.exe
运行start.bat即可正确启动myapp.exe
现在,需要用vb来控制这个程序的启动和退出,这个我知道可以用System.Diagnostics.Process来实现
但是如果用Process启动start.bat则会出现一个dos窗口,我不想看到这个窗口
如果直接启动myapp.exe则会因为环境变量未设置好,而导致myapp.exe运行不成功
有什么办法可以用vb先设置环境变量,然后启动myapp.exe吗?
承蒙赐教、不胜感激
10 个解决方案
#1
process.StartInfo.CreateNoWindow=true
#2
用c#设置环境变量,应该还是需要调用系统user32.dll链接库,你可以参考http://zhidao.baidu.com/question/53584405.html
#3
搜一下:批处理 隐藏CMD窗口
#4
可以在代码里设置环境变量:
Environment.SetEnvironmentVariable("PATH", path);
Environment.SetEnvironmentVariable("PATH", path);
#5
用System.Diagnostics.Process来实现可以设置成不显示dos窗口的
#6
Dim psi As New System.Diagnostics.ProcessStartInfo
With psi
.CreateNoWindow = True
.FileName = System.IO.Path.Combine(Application.StartupPath, "start.bat")
.WindowStyle = ProcessWindowStyle.Hidden
End With
System.Diagnostics.Process.Start(psi)
With psi
.CreateNoWindow = True
.FileName = System.IO.Path.Combine(Application.StartupPath, "start.bat")
.WindowStyle = ProcessWindowStyle.Hidden
End With
System.Diagnostics.Process.Start(psi)
#7
同意楼上。环境变量。在.net下也可以设置。
#8
学习了...
#9
我的代码给你参考,没有DOS窗口的
Private Sub PingServer(ByVal state As Object)
Dim UseTime As Integer
Dim ps As New System.Diagnostics.Process
Dim Output As String = ""
ps.StartInfo.FileName = "ping.exe"
ps.StartInfo.Arguments = "-w " & (_Timeout * 1000).ToString.Trim & " " & _Ip
ps.StartInfo.UseShellExecute = False
ps.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
ps.StartInfo.RedirectStandardInput = False
ps.StartInfo.RedirectStandardOutput = True
ps.StartInfo.RedirectStandardError = True
ps.StartInfo.CreateNoWindow = True
UseTime = System.Environment.TickCount
ps.Start()
Output = ps.StandardOutput.ReadToEnd
UseTime = System.Environment.TickCount - UseTime
ps.Close()
ps.Dispose()
ps = Nothing
SaveResult(UseTime, Output)
UseTime = Nothing
Output = Nothing
End Sub
#10
方法很多,可以用API,也可以SHELL
当然你也可以继续用PROCESS
当然你也可以继续用PROCESS
#1
process.StartInfo.CreateNoWindow=true
#2
用c#设置环境变量,应该还是需要调用系统user32.dll链接库,你可以参考http://zhidao.baidu.com/question/53584405.html
#3
搜一下:批处理 隐藏CMD窗口
#4
可以在代码里设置环境变量:
Environment.SetEnvironmentVariable("PATH", path);
Environment.SetEnvironmentVariable("PATH", path);
#5
用System.Diagnostics.Process来实现可以设置成不显示dos窗口的
#6
Dim psi As New System.Diagnostics.ProcessStartInfo
With psi
.CreateNoWindow = True
.FileName = System.IO.Path.Combine(Application.StartupPath, "start.bat")
.WindowStyle = ProcessWindowStyle.Hidden
End With
System.Diagnostics.Process.Start(psi)
With psi
.CreateNoWindow = True
.FileName = System.IO.Path.Combine(Application.StartupPath, "start.bat")
.WindowStyle = ProcessWindowStyle.Hidden
End With
System.Diagnostics.Process.Start(psi)
#7
同意楼上。环境变量。在.net下也可以设置。
#8
学习了...
#9
我的代码给你参考,没有DOS窗口的
Private Sub PingServer(ByVal state As Object)
Dim UseTime As Integer
Dim ps As New System.Diagnostics.Process
Dim Output As String = ""
ps.StartInfo.FileName = "ping.exe"
ps.StartInfo.Arguments = "-w " & (_Timeout * 1000).ToString.Trim & " " & _Ip
ps.StartInfo.UseShellExecute = False
ps.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
ps.StartInfo.RedirectStandardInput = False
ps.StartInfo.RedirectStandardOutput = True
ps.StartInfo.RedirectStandardError = True
ps.StartInfo.CreateNoWindow = True
UseTime = System.Environment.TickCount
ps.Start()
Output = ps.StandardOutput.ReadToEnd
UseTime = System.Environment.TickCount - UseTime
ps.Close()
ps.Dispose()
ps = Nothing
SaveResult(UseTime, Output)
UseTime = Nothing
Output = Nothing
End Sub
#10
方法很多,可以用API,也可以SHELL
当然你也可以继续用PROCESS
当然你也可以继续用PROCESS