CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 4 of 4

Threaded View

  1. #1
    Join Date
    Mar 2002
    Location
    Colorado
    Posts
    105

    Killing Previous Instance of VB6 Application

    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
    Last edited by lbargers; March 4th, 2013 at 09:15 AM.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured