I got this for Excel, should work the same way with Outlook though you'll obviously have to tweak it; mostly it came from O'Reilly's Access Cookbook:
Declare Function acb_apiFindWindow Lib "user32" Alias "FindWindowA" (ByVal strClassName As String, ByVal lpWindowName As Any) As Long
Function acbIsAppLoaded(ByVal varClassName As Variant) As Long
' Report if an application is currently loaded
' strClassName: the Windows class name for the main window
' of the app to check for.
' Return Value: 0 if App isn't loaded, non-zero (the
' app's hWnd) otherwise.
If IsNull(varClassName) Then
acbIsAppLoaded = 0
acbIsAppLoaded = acb_apiFindWindow(CStr(varClassName), 0&)
Dim hWnd As Variant
Dim blflag As Boolean
hWnd = acbIsAppLoaded("XLMain")
If hWnd <> 0 Then
blflag = True
ElseIf hWnd = 0 Then
blflag = False
IsExcelRunning = blflag
And here's how I call it:
If IsExcelRunning = False Then
Set xlApp = New Excel.Application
Set xlApp = GetObject(, "Excel.Application")
Here's a URL with Microsoft Office window class names.