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

如何在vb6中重新运行我的程序?,vb6,Vb6,如何在vb6中重新运行(关闭然后运行)我的程序停止当前正在运行的可执行文件(在IDE上单击带有方形块图像的按钮),然后按住shift+F5以重新启动程序 停止当前正在运行的可执行文件(单击IDE上带有方形块图像的按钮),然后按住shift+F5键以重新启动程序 最好的方法可能是创建一个“观察者”应用程序,在终止之前在主应用程序中启动它 首先,主应用程序应该在启动时创建互斥或信号量。当你想重新启动应用程序时,让主应用程序启动watcher。观察者应用程序应该等待主应用程序互斥/信号量消失,然后重新

如何在vb6中重新运行(关闭然后运行)我的程序停止当前正在运行的可执行文件(在IDE上单击带有方形块图像的按钮),然后按住shift+F5以重新启动程序

停止当前正在运行的可执行文件(单击IDE上带有方形块图像的按钮),然后按住shift+F5键以重新启动程序

最好的方法可能是创建一个“观察者”应用程序,在终止之前在主应用程序中启动它

首先,主应用程序应该在启动时创建互斥或信号量。当你想重新启动应用程序时,让主应用程序启动watcher。观察者应用程序应该等待主应用程序互斥/信号量消失,然后重新启动主应用程序


我最近发布了一个用VB6编写的信号量类,它可以解决一些困难的工作:

最好的方法是创建一个“观察者”应用程序,在终止它之前在主应用程序中启动它

首先,主应用程序应该在启动时创建互斥或信号量。当你想重新启动应用程序时,让主应用程序启动watcher。观察者应用程序应该等待主应用程序互斥/信号量消失,然后重新启动主应用程序


我最近发布了一个用VB6编写的信号量类,它将负责一些艰苦的工作:

另一种方法可能是创建一个启动可执行文件的批处理文件。使用异步调用调用此函数


然后,您将需要一些逻辑来检查是否没有两个实例同时运行。如果有,新的可以等一秒钟左右。如果仍然存在,则会发出用户警告。

另一种方法可能是创建启动可执行文件的批处理文件。使用异步调用调用此函数

然后,您将需要一些逻辑来检查是否没有两个实例同时运行。如果有,新的可以等一秒钟左右。如果它仍然存在,则会发出用户警告。

试试这个

主要项目:

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
Private声明函数findwindowlib“user32”别名“FindWindowA”(ByVal lpClassName作为字符串,ByVal lpWindowName作为字符串),长度为
私有声明函数PostMessage Lib“user32”别名“PostMessageA”(ByVal hwnd为Long,ByVal wMsg为Long,ByVal wParam为Long,lParam为Any)为Long
常数WM_CLOSE=&H10
专用子表单_加载()
黯淡如长
WinWnd=FindWindow(vbNullString,“Form1”)'将Form1替换为表单的标题
如果WinWnd为0,则
PostMessage WinWnd,WM_CLOSE,0&,0&
其他的
MsgBox“不存在该名称的窗口。”
如果结束
调用Shell(“Main.exe”,1)
端接头
在这里找到

试试这个

主要项目:

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
Private声明函数findwindowlib“user32”别名“FindWindowA”(ByVal lpClassName作为字符串,ByVal lpWindowName作为字符串),长度为
私有声明函数PostMessage Lib“user32”别名“PostMessageA”(ByVal hwnd为Long,ByVal wMsg为Long,ByVal wParam为Long,lParam为Any)为Long
常数WM_CLOSE=&H10
专用子表单_加载()
黯淡如长
WinWnd=FindWindow(vbNullString,“Form1”)'将Form1替换为表单的标题
如果WinWnd为0,则
PostMessage WinWnd,WM_CLOSE,0&,0&
其他的
MsgBox“不存在该名称的窗口。”
如果结束
调用Shell(“Main.exe”,1)
端接头

在这里找到

我的意思是重新启动exe程序通过“重新启动exe程序”,我知道在再次运行程序之前,已经有一个正在运行的窗口需要停止。我的意思是重新启动exe程序通过“重新启动exe程序”,我知道在再次运行程序之前,已经有一个正在运行的窗口需要停止。我误解你了吗?