怎样更新已运行的应用程序? 我想做自升级程序,当应用程序运行时,先远程服务器连接,如果有新版本就自己下载并覆盖自己,然后继续运行更新后的应用程序!但我不想用另一个应用程序来更新升级程序,也就是说程序能进入内存,对该文件的写操作都没关系!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不可能,程序不可能状态一样,你必须完全停止对一个文件的操作后,另一个程序才能操作这个文件,即文件在运行时是只读的,如你正在写一个TXT文件,你对它进行操作时就会提示你文件已经打开 '版本检查及更新过程Private Sub ExeRefresh()'定义四个临时字符串变量Dim s1 As StringDim s2 As StringDim s3 As StringDim s4 As StringOn Error Resume Next'将本地应用程序MyApp.EXE的全路径名存入 s1'将本地中介程序FastCopy.exe的全路径名存入 s3s1 = "TNT"If Len(appPath) > 3 Then s1 = appPath + Trim(app_name1) + ".exe" s3 = appPath + midexename1 + ".EXE"Else s1 = appPath + Trim(app_name1) + ".exe" s3 = appPath + midexename1 + ".EXE"End Ifs4 = "TNT"'将本地应用程序MyApp.EXE文件的修改时间存入 s4s4 = FileDateTime(s1)s2 = "TNT"'将网络上应用程序MyApp.EXE文件的修改时间存入 s2s2 = FileDateTime(exepath1 + app_name1 + ".EXE")If s2 = "TNT" Then MsgBox "没有找到最新的可执行文件:" + exepath1 + app_name1 + ".EXE" _ + vbCrLf + vbCrLf + "原因1:存放最新EXE的服务器或者工作站没有打开;" _ + vbCrLf + "原因2:存放最新EXE的路径错误或者EXE文件不存在;" _ + vbCrLf + "请将此情况通知程序员." + vbCrLf + vbCrLf _ + vbCrLf + "按确定按钮后,将继续运行本地EXE文件.", vbCritical, "提示"End IfIf s2 = "TNT" Or s4 = "TNT" Then Exit Sub'如果网络上应用程序MyApp.EXE文件的修改时间,大于本地MyApp.EXE文件的修改时间'然后再运行本地MyApp.EXE ,中介程序退出后,整个更新过程结束.If CDate(s2) > CDate(s4) Then '将网络上的中介程序FastCopy.exe复制到本地,这样可防止本地无中介程序时无法进行更新 FileCopy exepath1 + midexename1 + ".EXE", s3 '则运行中介程序FastCopy.exe ,将最新的MyApp.EXE 复制到本地 s1 = Shell(s3 + " " + exepath1 + "," + app_name1 + ".EXE", vbNormalFocus) '本地应用程序MyApp.EXE 终止运行,否则已经更新的MyApp.EXE无法覆盖本地的MyApp.EXE . EndEnd IfEnd Sub'将以上程序编译为:MyApp.exe 存储在共享目录中.试试吧, 一个疑难问题:ADO访问局域网内SQL SERVER数据库,当读取大量数据时,死机?! treeview上增加一个节点名称时检查名称是否和已有名称重复,怎么做?在线等待 activex 大家说说,股票软件的那个"k"线图(就是涨跌的趋势线),是用什么做的。 VB可以做的来吗?怎么做? 请教大家一个问题,请不惜赐教!!! 请问哪里有VB6.0下载? 超级菜的问题!!急!!!!! vb中如何调用公用模块啊 datacombo控件选择值的我问题。 我又升啦!!一颗星★,哈哈,散分 :)各位大哥大姐:)怎样在Rtf控件中插入图片啊:) 关于ADO数据库的学习!
Private Sub ExeRefresh()
'定义四个临时字符串变量
Dim s1 As String
Dim s2 As String
Dim s3 As String
Dim s4 As String
On Error Resume Next
'将本地应用程序MyApp.EXE的全路径名存入 s1
'将本地中介程序FastCopy.exe的全路径名存入 s3
s1 = "TNT"
If Len(appPath) > 3 Then
s1 = appPath + Trim(app_name1) + ".exe"
s3 = appPath + midexename1 + ".EXE"
Else
s1 = appPath + Trim(app_name1) + ".exe"
s3 = appPath + midexename1 + ".EXE"
End If
s4 = "TNT"
'将本地应用程序MyApp.EXE文件的修改时间存入 s4
s4 = FileDateTime(s1)
s2 = "TNT"
'将网络上应用程序MyApp.EXE文件的修改时间存入 s2
s2 = FileDateTime(exepath1 + app_name1 + ".EXE")
If s2 = "TNT" Then
MsgBox "没有找到最新的可执行文件:" + exepath1 + app_name1 + ".EXE" _
+ vbCrLf + vbCrLf + "原因1:存放最新EXE的服务器或者工作站没有打开;" _
+ vbCrLf + "原因2:存放最新EXE的路径错误或者EXE文件不存在;" _
+ vbCrLf + "请将此情况通知程序员." + vbCrLf + vbCrLf _
+ vbCrLf + "按确定按钮后,将继续运行本地EXE文件.", vbCritical, "提示"
End If
If s2 = "TNT" Or s4 = "TNT" Then Exit Sub
'如果网络上应用程序MyApp.EXE文件的修改时间,大于本地MyApp.EXE文件的修改时间
'然后再运行本地MyApp.EXE ,中介程序退出后,整个更新过程结束.
If CDate(s2) > CDate(s4) Then
'将网络上的中介程序FastCopy.exe复制到本地,这样可防止本地无中介程序时无法进行更新
FileCopy exepath1 + midexename1 + ".EXE", s3
'则运行中介程序FastCopy.exe ,将最新的MyApp.EXE 复制到本地
s1 = Shell(s3 + " " + exepath1 + "," + app_name1 + ".EXE", vbNormalFocus)
'本地应用程序MyApp.EXE 终止运行,否则已经更新的MyApp.EXE无法覆盖本地的MyApp.EXE .
End
End If
End Sub
'将以上程序编译为:MyApp.exe 存储在共享目录中.
试试吧,