怎样用VB实现覆盖功能??????????????????????(高手近来看看)

skvd 2004-11-21 09:30:14
例如:
我用VB写了一个(计算器程序)生成了(计算器.exe)
我又用VB写了一个(计算器程序,并且给里面添加了很多功能)生成了(更新计算器.exe)
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
怎样实现当你双击,更新计算器.exe的时候,就将原来计算器.exe 覆盖
然后你运行计算器.exe显示的是被覆盖过的(也就是显示的是更新计算器.exe)。
...全文
220 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
boyalsogood 2004-11-23
  • 打赏
  • 举报
回复
我看这种算法有些象病毒,万一“更新计算器.exe”还完全写好,一运行,原来虽然功能简单但是能用的程序就没了,呵呵,偶在这里瞎想一下...
tztz520 2004-11-23
  • 打赏
  • 举报
回复
用上面的代码写成一个update.exe后.放到程序的目录下.
在你的程序中直接执行就可以了.
Private Sub Command1_Click()
shell app.path & "\update.exe"
End Sub
skvd 2004-11-23
  • 打赏
  • 举报
回复
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Const WM_CLOSE = &H10


Private Sub Command1_Click()
Dim WindowHwnd As Long

WindowHwnd = FindWindow(vbNullString, "你程序的标题")
If WindowHwnd <> 0 Then PostMessage WindowHwnd, WM_CLOSE, 0&, 0&'如果程序已经打开就关闭它
If Dir(App.Path & "\计算器.exe") <> "" Then Kill App.Path & "\计算器.exe"
If Dir(App.Path & "\更新计算器.exe") <> "" Then
FileCopy App.Path & "\更新计算器.exe", App.Path & "\计算器.exe"
MsgBox "升级完成."
shell App.Path & "\计算器.exe"'重新打开
Else
MsgBox "更新计算器.exe不存在"
End If

End Sub
..............................

你把代码放在 Command1_Click()
那就还的给更新计算器上加一个命令按扭(我想什么也不给它添加)
更新完了这段代码还在被更新过的计算器里面(怎么将它去掉)
‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘
我想做(更新的程序)它是一个中间程序让它把旧的更新成新的
---中间程序就是执行覆盖的--
而且必须先运行中间程序才能更新
’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘

'''''''''''''''''''''''''''''''
我是一个初学者
谁帮我写一下
谢谢
写的都有分

Mars.CN 2004-11-22
  • 打赏
  • 举报
回复
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Const WM_CLOSE = &H10


Private Sub Command1_Click()
Dim WindowHwnd As Long

WindowHwnd = FindWindow(vbNullString, "你程序的标题")
If WindowHwnd <> 0 Then PostMessage WindowHwnd, WM_CLOSE, 0&, 0&'如果程序已经打开就关闭它
If Dir(App.Path & "\计算器.exe") <> "" Then Kill App.Path & "\计算器.exe"
If Dir(App.Path & "\更新计算器.exe") <> "" Then
FileCopy App.Path & "\更新计算器.exe", App.Path & "\计算器.exe"
MsgBox "升级完成."
shell App.Path & "\计算器.exe"'重新打开
Else
MsgBox "更新计算器.exe不存在"
End If

End Sub


这个不错!
你试试!
Leekey 2004-11-22
  • 打赏
  • 举报
回复
update设计思路:
先运行update,update检查新的main文件是否存在,如存在将文件读入到temp文件里,再将旧的main文件删除,将temp文件命名为main,运行更新后的main文件,关闭update。
update成功!(期间如有错误都不会影响文件的完整性)

glsoft4 2004-11-22
  • 打赏
  • 举报
回复
但是还是先检测一下更新计算器.exe存不存在,否则如果不存在,不白白删掉计算器.exe关注!!!
tztz520 2004-11-21
  • 打赏
  • 举报
回复
一般的做法是写一个update.exe来执行.

Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Const WM_CLOSE = &H10


Private Sub Command1_Click()
Dim WindowHwnd As Long

WindowHwnd = FindWindow(vbNullString, "你程序的标题")
If WindowHwnd <> 0 Then PostMessage WindowHwnd, WM_CLOSE, 0&, 0&'如果程序已经打开就关闭它
If Dir(App.Path & "\计算器.exe") <> "" Then Kill App.Path & "\计算器.exe"
If Dir(App.Path & "\更新计算器.exe") <> "" Then
FileCopy App.Path & "\更新计算器.exe", App.Path & "\计算器.exe"
MsgBox "升级完成."
shell App.Path & "\计算器.exe"'重新打开
Else
MsgBox "更新计算器.exe不存在"
End If

End Sub
danielinbiti 2004-11-21
  • 打赏
  • 举报
回复
如果exe运行了,那不可能更新了。
不然可以通过版本检测等
caimps 2004-11-21
  • 打赏
  • 举报
回复
二楼的方法
tmran 2004-11-21
  • 打赏
  • 举报
回复
同意午夜逛街
GGL123 2004-11-21
  • 打赏
  • 举报
回复
呵呵 偶就不多说了
creazyfish 2004-11-21
  • 打赏
  • 举报
回复
一般考虑的方式就是需要把旧的程序停掉然后覆盖掉原来的方式,具体的实现方法楼上的讲得很清楚了,偶就不多说了呵呵
Mars.CN 2004-11-21
  • 打赏
  • 举报
回复
关注一下
江语 2004-11-21
  • 打赏
  • 举报
回复
就一个.EXE文件的这种程序说到底就是先删除,在复制的一个过程!
行云边 2004-11-21
  • 打赏
  • 举报
回复
把 “更新计算器” 的安装程序 解压到 “计算器” 的目录, 2个文件名相同,安装程序自动会覆盖的
lndlwwh830 2004-11-21
  • 打赏
  • 举报
回复
同意 tztz520(午夜逛街)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧