Пример определения запущен-ли Excel.
Вместо 'XLMAIN' можно подставить имя главного
окна Outlook (я его не знаю).
Visual BasicВыделить код |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
Declare Function FindWindow Lib 'user32' Alias _
'FindWindowA' (ByVal lpClassName As String, _
ByVal lpWindowName As Long) As Long
Function DetectExcel() As Long
' Procedure dectects a running Excel and registers it.
Const WM_USER = 1024
Dim hWnd As Long
' If Excel is running this API call returns its handle.
hWnd = FindWindow('XLMAIN', 0)
If hWnd = 0 Then ' 0 means Excel not running.
Exit Function
Else
' Excel is running so use the SendMessage API
End If
End Function
| |
|
Да напрямую:
Visual BasicВыделить код |
1
|
If Tasks.Exists(Name:='Microsoft Outlook') = True Then ...
| |
|
Прошу прощения, что поднимаю старую тему, но тоже столкнулся с данным вопросом, поэтому пришлось потратить много времени на решение данной темы.
Для ищущих выкладываю решение здесь:
Visual BasicВыделить код |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#If Win64 Then
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal _
lpClassName As String, ByVal lpWindowName As String) As LongLong
#Else
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal _
lpClassName As String, ByVal lpWindowName As String) As Long
#End If
Private Sub Workbook_Open()
findoutlook = FindWindow("OpusApp", vbNullString)
If findoutlook Then
Sheets("intro").Activate
Cells(1, 1).Select
Else
MsgBox "ВНИМАНИЕ! Microsoft Outlook не запущен! Перед открытием программы запустите Microsoft Outlook."
ThisWorkbook.Close True
End If
End Sub
| |
|