Foxtable(狐表)用户栏目专家坐堂 → 自动升级的代码如何不要弹出CMD窗口


  共有3204人关注过本帖树形打印复制链接

主题:自动升级的代码如何不要弹出CMD窗口

帅哥哟,离线,有人找我吗?
HappyFt
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17564 威望:0 精华:0 注册:2014/7/29 19:09:00
自动升级的代码如何不要弹出CMD窗口  发帖心情 Post By:2015/8/4 20:37:00 [只看该作者]

下面是打开项目时自动升级的一段代码,但总是会弹出一个CMD的Dos命令窗口,要如何才能不弹出,只是在前面显示一个“---正在升级---”的对话框,完成后自动打开项目就行

 

代码传不上来,只好放在一个txt文件中了。


 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:自动升级.txt

但总不成功,应该怎么办?

 

谢谢!


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/4 21:00:00 [只看该作者]

直接写 shell(s, 0) 就行。


 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17564 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2015/8/5 19:25:00 [只看该作者]

 请问这句shell(s,0)要加在哪个位置?象下面这样吗?还是哪里?

 

。。。。

FileSys.WriteAllText(up_vbs,"ws.run ""cmd /c " & utmp & "\Update.bat" & """,vbhide",True,Encoding.Default)

shell(s,0) 

 

Dim Proc As New Process '定义一个新的Process
Proc.File = s '指定要打开的文件
Proc.Verb = "Open" '指定动作
Proc.Start()
proc.WaitForExit


 

谢谢!


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/5 20:10:00 [只看该作者]

哦,写错了,这样处理

 

Dim p As new Process()
p.StartInfo.FileName = "cmd.exe"
p.StartInfo.UseShellExecute = False '关闭Shell的使用
p.StartInfo.RedirectStandardInput = True '重定向标准输入
p.StartInfo.RedirectStandardOutput = True '重定向标准输出
p.StartInfo.RedirectStandardError = True '重定向错误输出
p.StartInfo.CreateNoWindow = True '设置不显示窗口
p.Start()
p.StandardInput.WriteLine("d:\test.bat")
p.StandardInput.WriteLine("exit")
Dim strRst As String = p.StandardOutput.ReadToEnd()

msgbox(strRst)

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17564 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2015/8/6 11:08:00 [只看该作者]

谢谢!这样是不会弹出那个窗口了,但是还有两个问题:

1、怎么才能做到升级时在前面一直显示一个“。。。正在升级的窗口。。。”的窗口,直到升级完成时关闭。

2、下面的代码升级后项目不能自动打开,如何才可以升级完成后自动打开项目呢?

 

'建立升级批处理命令文件--------------------
Dim s As String = utmp & "\update.bat"
If FileSys.FileExists(s) Then
    FileSys.DeleteFile(s)
End If
FileSys.WriteAllText(s,"@echo off" & vbcrlf,True,Encoding.Default)
FileSys.WriteAllText(s,"taskkill /f /im foxtable.exe" & vbcrlf,True,Encoding.Default)
FileSys.WriteAllText(s,"@cls" & vbcrlf,True,Encoding.Default) '清除屏幕.清除删除 foxtable.exe 进程后屏幕反馈的信息.
FileSys.WriteAllText(s,"echo Wscript.Sleep Wscript.Arguments(0) * 1000>Delay.vbs" & vbcrlf,True,Encoding.Default)
FileSys.WriteAllText(s,"Delay.vbs 3" & vbcrlf,True,Encoding.Default)
FileSys.WriteAllText(s,"del Delay.vbs" & vbcrlf,True,Encoding.Default)
FileSys.WriteAllText(s,"xcopy /s /e /q /y " & utmp1 & "\*.* " & upath & vbcrlf,True,Encoding.Default) '复制升级文件,采用upath变量自动判断升级路径
FileSys.WriteAllText(s,"@cls" & vbcrlf,True,Encoding.Default) '清除屏幕.清除升级文件后屏幕反馈的信息.
FileSys.WriteAllText(s,"start " & ProjectPath & "..\" & ename & vbcrlf,True,Encoding.Default) '重启
FileSys.WriteAllText(s,"rd /s /q " & utmp & vbcrlf,True,Encoding.Default) '删除临时文件夹

Dim p As new Process()
p.StartInfo.FileName = "cmd.exe"
p.StartInfo.UseShellExecute = False '关闭Shell的使用
p.StartInfo.RedirectStandardInput = True '重定向标准输入
p.StartInfo.RedirectStandardOutput = True '重定向标准输出
p.StartInfo.RedirectStandardError = True '重定向错误输出
p.StartInfo.CreateNoWindow = True '设置不显示窗口
p.Start()
p.StandardInput.WriteLine(utmp & "\update.bat")

p.WaitForExit


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/6 11:24:00 [只看该作者]

汗,我测试一下下面的代码,不会弹出doc窗口啊

 

Dim up_vbs As String = "d:\up_vbs.vbs"
Dim Proc As New Process '定义一个新的Process
Proc.File = up_vbs '指定要打开的文件
Proc.Start()
proc.WaitForExit


 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17564 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2015/8/6 11:29:00 [只看该作者]

现在是不会弹出来了,但是项目不能自动重新启动,是哪里的问题呢?

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/6 11:35:00 [只看该作者]

我测试可以打开某个文件

 

---------------------------------------

 

1、bak文件

 

taskkill /f /im foxtable.exe

ping www.baidu.com > d:\test.txt

start d:\test.txt

 

2、vbs文件

 

Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c d:\test.bat",vbhide

 

3、运行代码

 

Dim up_vbs As String = "d:\up_vbs.vbs"
Dim Proc As New Process '定义一个新的Process
Proc.File = up_vbs '指定要打开的文件
Proc.Start()

[此贴子已经被作者于2015/8/6 11:34:44编辑过]

 回到顶部