Get the exit code of a process

Get the exit code of a process

In a few cases, in particular when running MsDos batch files from within a VB application, you may want to determine the ERRORLEVEL set by an external application. You can’t do it with a plain Shell statement, but the job becomes easy with the support of the GetProcessExitCode API function:

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As _    Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As LongPrivate Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As _    Long, lpExitCode As Long) As LongConst STILL_ACTIVE = &H103Const PROCESS_QUERY_INFORMATION = &H400Private Sub cmdRunNotepad_Click()    Dim hTask As Long    Dim hProcess As Long    Dim exitCode As Long        hTask = Shell("Notepad", vbNormalFocus)    hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, hTask)        ' loop until the process returns a valid exit code    Do        ' relinquish this CPU time slice        Sleep 100        DoEvents        ' query for exit code        GetExitCodeProcess hProcess, exitCode    Loop While exitCode = STILL_ACTIVE        MsgBox "Exit code = " & exitCode, vbInformation        End Sub


About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist