如何在vb6中重新运行我的程序?

时间:2011-01-02 16:42:02

标签: vb6

如何在vb6中重新运行(关闭然后运行)我的程序

4 个答案:

答案 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