VB6.0 如何依次运行多个外部exe程序(安装程序),前一个程序关闭后一个程序才打开 20
VB6.0要求:一个按钮,单击后,运行工程所在目录(app.path)下的1.exe2.exe3.exe(这3个为3个软件安装程序),先打开1.exe,当1.exe关闭后...
VB6.0
要求:
一个按钮,单击后,运行工程所在目录(app.path)下的1.exe 2.exe 3.exe(这3个为3个软件安装程序),先打开1.exe,当1.exe关闭后(即安装完成后),2.exe打开,2完后,再打开3.exe
只需要按一个按钮就实现 展开
要求:
一个按钮,单击后,运行工程所在目录(app.path)下的1.exe 2.exe 3.exe(这3个为3个软件安装程序),先打开1.exe,当1.exe关闭后(即安装完成后),2.exe打开,2完后,再打开3.exe
只需要按一个按钮就实现 展开
展开全部
我写个函数,你试试吧……也许可以用钩子,不过我不知道如何钩住进程结束事件。这个思路就是写个过程,一直循环,每秒扫描一次进程关了没有,关了过程才结束。放心,这个循环不会吃CPU。
建立一个模块,写
Option Explicit
Private Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)'延时过程
Private Declare Function OpenProcess Lib "kernel32" Alias "OpenProcess" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Sub ShellAndWait(ByVal FileName As String)'FileName就是要打开的程序名
On Error Goto Handle'错误捕捉,防止要打开的文件不存在,当然最好这个过程别写在本过程里,提醒一下而已
Dim Pid As Long
Pid=Shell(FileName,vbNormalFocus)
CycStart:
Call Sleep(1000)'延时1000毫秒,你要是嫌扫描频率低,就降低一点,但太低了会耗CPU
If OpenProcess(1,0,Pid)<>0 Then Goto CycStart
Exit Sub
Handle:
MsgBox "出现错误!"
End Sub
模块Okay
假设App.path是C:\Windows,在某个过程里写
……
ShellAndWait "C:\Windows\1.exe"
ShellAndWait "C:\Windows\2.exe"
ShellAndWait "C:\Windows\3.exe"
……
就实现依次运行了。
PS:本操作可能影响VB6自身,调试前请保存!最好编译成exe之后再调试。
命令执行期间,你的程序会停止响应(都是Sleep()的功劳),所有程序运行完才会有反应。所以运行时别乱点你的窗口。
建立一个模块,写
Option Explicit
Private Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)'延时过程
Private Declare Function OpenProcess Lib "kernel32" Alias "OpenProcess" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Sub ShellAndWait(ByVal FileName As String)'FileName就是要打开的程序名
On Error Goto Handle'错误捕捉,防止要打开的文件不存在,当然最好这个过程别写在本过程里,提醒一下而已
Dim Pid As Long
Pid=Shell(FileName,vbNormalFocus)
CycStart:
Call Sleep(1000)'延时1000毫秒,你要是嫌扫描频率低,就降低一点,但太低了会耗CPU
If OpenProcess(1,0,Pid)<>0 Then Goto CycStart
Exit Sub
Handle:
MsgBox "出现错误!"
End Sub
模块Okay
假设App.path是C:\Windows,在某个过程里写
……
ShellAndWait "C:\Windows\1.exe"
ShellAndWait "C:\Windows\2.exe"
ShellAndWait "C:\Windows\3.exe"
……
就实现依次运行了。
PS:本操作可能影响VB6自身,调试前请保存!最好编译成exe之后再调试。
命令执行期间,你的程序会停止响应(都是Sleep()的功劳),所有程序运行完才会有反应。所以运行时别乱点你的窗口。
展开全部
我也需要实现这个
那个高手帮忙!
参考资料:
防止程序运行多个实例
很多基于Windows系统的程序,包括用VB编写的简单程序,都允许用户在同时启动多个程序实例。比如,用户可以同时开启多个记事本窗口,对不同的文本文件进行编辑。
但有时候,允许程序启动多个实例并不是一件好事。比如一个程序用来监视某个文件夹并跟踪文件夹中的新文件,这种程序只要一个实例就足够了。同样,如果一个前端数据库程序运新了多个实例,对数据库中相同内容的同时操作有可能导致数据错误。
要防止程序运行多个实例,只要使用App.PrevInstance属性就可以了。当有另一个实例正在运行时,该属性会返回True。你可以在程序的Load事件中调用这个属性进行判断。如果返回值为True,你可以向用户显示一条信息,更进一步,在关闭这个新实例前,还可以激活已有的实例,这也是目前大部分程序采用的方式。下面的代码可以在必要时显示一条警告信息:
If App.PrevInstance Then
MsgBox "Another instance of this program is already open."
AppActivate App.Title
Unload Me
End If
搜到的就这些
我不是要分的
希望有个高手能回答 我现在也需要这代码
那个高手帮忙!
参考资料:
防止程序运行多个实例
很多基于Windows系统的程序,包括用VB编写的简单程序,都允许用户在同时启动多个程序实例。比如,用户可以同时开启多个记事本窗口,对不同的文本文件进行编辑。
但有时候,允许程序启动多个实例并不是一件好事。比如一个程序用来监视某个文件夹并跟踪文件夹中的新文件,这种程序只要一个实例就足够了。同样,如果一个前端数据库程序运新了多个实例,对数据库中相同内容的同时操作有可能导致数据错误。
要防止程序运行多个实例,只要使用App.PrevInstance属性就可以了。当有另一个实例正在运行时,该属性会返回True。你可以在程序的Load事件中调用这个属性进行判断。如果返回值为True,你可以向用户显示一条信息,更进一步,在关闭这个新实例前,还可以激活已有的实例,这也是目前大部分程序采用的方式。下面的代码可以在必要时显示一条警告信息:
If App.PrevInstance Then
MsgBox "Another instance of this program is already open."
AppActivate App.Title
Unload Me
End If
搜到的就这些
我不是要分的
希望有个高手能回答 我现在也需要这代码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询