如何在vb6中重新运行(关闭然后运行)我的程序
答案 0 :(得分:3)
执行此操作的最佳方法可能是创建一个“观察程序”应用程序,然后在终止它之前在主应用程序中启动它。
首先,主应用程序应该在启动时创建互斥锁或信号量。当您想要重新启动应用程序时,请让主应用程序启动观察程序。观察者应用程序应该等到主应用程序互斥锁/信号量消失,然后重新启动主应用程序。
我最近发布了一个用VB6编写的信号量类,它将处理一些艰苦的工作:http://www.vbforums.com/showthread.php?t=634635
答案 1 :(得分:0)
停止当前运行的可执行文件(单击IDE上带有方块图像的按钮),然后按+ F5键重新启动程序。
答案 2 :(得分:0)
另一种方法可能是创建一个启动可执行文件的批处理文件。通过异步调用来调用它。
然后,您将需要一个小逻辑来检查您是否一次运行两个实例。如果有,那么新的可以等待一秒左右。如果它仍然存在,则可以给出用户警告。
答案 3 :(得分:0)
试试这个。
主要项目:
Private Sub Command2_Click()
Call Shell(App.Path & "\Restart.exe", 1)
End Sub
重启项目:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
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 Form_Load()
Dim WinWnd As Long
WinWnd = FindWindow(vbNullString, "Form1") 'Replace Form1 with Whatever your Form's Caption is
If WinWnd <> 0 Then
PostMessage WinWnd, WM_CLOSE, 0&, 0&
Else
MsgBox "No window of that name exists."
End If
Call Shell("Main.exe", 1)
End Sub
在这里找到http://www.vbforums.com/showthread.php?600511-RESOLVED-Application-restarting-itself