If you shell app A from app B then I guess you can.

I would suggest putting the following code in an ax exe (to allow async execution) alternatively read up on the switches for the api calls which may allow you to execute the code asynchronously without using an ax exe.

See here for detailed explanation: http://support.microsoft.com/support.../Q129/7/96.ASP
From the above MSDN link:

VB Code:
  1. Private Type STARTUPINFO
  2.       cb As Long
  3.       lpReserved As String
  4.       lpDesktop As String
  5.       lpTitle As String
  6.       dwX As Long
  7.       dwY As Long
  8.       dwXSize As Long
  9.       dwYSize As Long
  10.       dwXCountChars As Long
  11.       dwYCountChars As Long
  12.       dwFillAttribute As Long
  13.       dwFlags As Long
  14.       wShowWindow As Integer
  15.       cbReserved2 As Integer
  16.       lpReserved2 As Long
  17.       hStdInput As Long
  18.       hStdOutput As Long
  19.       hStdError As Long
  20.    End Type
  21.  
  22.    Private Type PROCESS_INFORMATION
  23.       hProcess As Long
  24.       hThread As Long
  25.       dwProcessID As Long
  26.       dwThreadID As Long
  27.    End Type
  28.  
  29.    Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal _
  30.       hHandle As Long, ByVal dwMilliseconds As Long) As Long
  31.  
  32.    Private Declare Function CreateProcessA Lib "kernel32" (ByVal _
  33.       lpApplicationName As String, ByVal lpCommandLine As String, ByVal _
  34.       lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, _
  35.       ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _
  36.       ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As String, _
  37.       lpStartupInfo As STARTUPINFO, lpProcessInformation As _
  38.       PROCESS_INFORMATION) As Long
  39.  
  40.    Private Declare Function CloseHandle Lib "kernel32" _
  41.       (ByVal hObject As Long) As Long
  42.  
  43.    Private Declare Function GetExitCodeProcess Lib "kernel32" _
  44.       (ByVal hProcess As Long, lpExitCode As Long) As Long
  45.  
  46.    Private Const NORMAL_PRIORITY_CLASS = &H20&
  47.    Private Const INFINITE = -1&
  48.  
  49.    Public Function ExecCmd(cmdline$)
  50.       Dim proc As PROCESS_INFORMATION
  51.       Dim start As STARTUPINFO
  52.  
  53.       ' Initialize the STARTUPINFO structure:
  54.       start.cb = Len(start)
  55.  
  56.       ' Start the shelled application:
  57.       ret& = CreateProcessA(vbNullString, cmdline$, 0&, 0&, 1&, _
  58.          NORMAL_PRIORITY_CLASS, 0&, vbNullString, start, proc)
  59.  
  60.       ' Wait for the shelled application to finish:
  61.          ret& = WaitForSingleObject(proc.hProcess, INFINITE)
  62.          Call GetExitCodeProcess(proc.hProcess, ret&)
  63.          Call CloseHandle(proc.hThread)
  64.          Call CloseHandle(proc.hProcess)
  65.          ExecCmd = ret&
  66.    End Function
  67.  
  68.  
  69.  
  70.    Sub Form_Click()
  71.       Dim retval As Long
  72.       retval = ExecCmd("notepad.exe")
  73.       MsgBox "Process Finished, Exit Code " & retval
  74.    End Sub