I've searched around for the proper way to kill a previous Instance of a VB6 application. My situation seems a bit unique. If our main sevice(outside of the application) dies, we need to terminate the previous instance of the running application and then, when the service comes back up only the new instance should be loaded. I am trying to exit this code in the following function:
Code:Private Sub g_cServerInterface_FatalError(Error As enSvrReturns, ErrorString As String) Dim sMsg As String Dim result As VbMsgBoxResult m_bFatalError = True UnFreeze If m_cLanguageText Is Nothing Then GoTo TheEnd 'Form not yet loaded - not yet logged on End If ' m_NumFatalErrors = m_NumFatalErrors + 1 ' If m_NumFatalErrors > 5 Then ' Functions.DevInfo "Unable to restart Manitou.", g_cLangText_General ' End ' End If If Error <> SVRERR_NOT_CONNECTED Or RunningInDebugger() Then sMsg = g_cLangText_General.GetText("A system error has occurred") If ErrorString <> "" Then sMsg = sMsg & ":" & vbCrLf & vbCrLf & ErrorString & vbCrLf & vbCrLf Else sMsg = sMsg & ". " End If sMsg = sMsg & g_cLangText_General.GetText("Press OK to attempt to restart or Cancel to quit.") result = DevAskOkCancel(sMsg, Nothing) Else ' Since we've been disconnected, attempt immediately to reconnect result = vbOK End If If (result = vbOK) Then On Local Error Resume Next If InStr(g_CommandLine, "-U") = 0 Then g_CommandLine = g_CommandLine & " -U" & g_cUser.id End If If InStr(g_CommandLine, "-P") = 0 Then g_CommandLine = g_CommandLine & " -P" & g_cUser.Password End If Shell App.Path & "\" & App.EXEName & " " & g_CommandLine & " -X", vbNormalFocus DoEvents End If TheEnd: If (Not RunningInDebugger()) Then ' Running as compiled executable ' Specifies the exit code for the process, and for all threads that ' are terminated as a result of this call. Use the GetExitCodeProcess ' function to retrieve the process's exit value. Use the GetExitCodeThread ' function to retrieve a thread's exit value. CoUninitialize ExitProcess 0 Else ' Running from the IDE End End If End Sub
Note that I added the CoUninitialize and ExitProcess 0 API calls to this. How can I correctly terminate the perviously loaded instance when the service comes back up? thanks Larry


Reply With Quote

Bookmarks