Как из VB определить запущен или нет Word?
Формулировка задачи:
Как из VB определить запущен или нет Word?
Решение задачи: «Как из VB определить запущен или нет Word?»
textual
Листинг программы
- Public Declare Function apiGetDesktopWindow Lib 'user32' Alias 'GetDesktopWindow' () As Long
- Public Declare Function apiGetWindow Lib 'user32' Alias 'GetWindow' (ByVal Hwnd As Long, ByVal wCmd As Long) As Long
- Public Declare Function apiGetWindowLong Lib 'user32' Alias 'GetWindowLongA' (ByVal Hwnd As Long, ByVal nIndex As Long) As Long
- Public Declare Function apiGetWindowText Lib 'user32' Alias 'GetWindowTextA' (ByVal Hwnd As Long, ByVal lpString As String, ByVal aint As Long) As Long
- Public Const mcGWCHILD = 5
- Public Const mcGWHWNDNEXT = 2
- Public Const mcGWLSTYLE = (-16)
- Public Const mcWSVISIBLE = &H10000000
- Public Const mconMAXLEN = 255
- '
- Public Function fEnumWindows(ByRef winArr() As String)
- Dim lngx As Long, lngLen As Long
- Dim lngStyle As Long, strCaption As String
- Dim n As Integer
- '
- ReDim winArr(1 To 1000)
- n = 0
- '
- lngx = apiGetDesktopWindow()
- 'Return the first child to Desktop
- lngx = apiGetWindow(lngx, mcGWCHILD)
- '
- Do While Not lngx = 0
- strCaption = fGetCaption(lngx)
- If Len(strCaption) > 0 Then
- lngStyle = apiGetWindowLong(lngx, mcGWLSTYLE)
- 'enum visible windows only
- If lngStyle And mcWSVISIBLE Then
- n = n + 1
- winArr(n) = fGetCaption(lngx)
- End If
- End If
- lngx = apiGetWindow(lngx, mcGWHWNDNEXT)
- Loop
- '
- If n > 0 Then ReDim Preserve winArr(1 To n)
- fEnumWindows = n
- '
- End Function
- '
- Public Function fGetCaption(Hwnd As Long)
- Dim strBuffer As String
- Dim intCount As Integer
- '
- strBuffer = String$(mconMAXLEN - 1, 0)
- intCount = apiGetWindowText(Hwnd, strBuffer, mconMAXLEN)
- If intCount > 0 Then
- fGetCaption = Left$(strBuffer, intCount)
- End If
- End Function
- '
- Sub Main()
- Dim i As Integer, appTitle As String
- Dim winArray() As String
- '
- appTitle = InputBox('Введите заголовок приложения', 'Запущено ли приложение?', _
- 'Microsoft Word')
- '
- ' Перечисление заголовков окон запущенных и видимых приложений (если надо):
- For i = 1 To fEnumWindows(winArray)
- Debug.Print winArray(i)
- Next i
- '
- ' Определение, запущено ли приложение:
- If IsAppRunning(appTitle) Then
- MsgBox 'Приложение ' + appTitle + ' запущено!', vbInformation, 'Информация'
- Else
- MsgBox 'Приложение ' + appTitle + ' не запущено.', vbInformation, 'Информация'
- End If
- '
- End Sub
- '
- Public Function IsAppRunning(ByVal appWindowCaption As String) As Boolean
- Dim i As Integer
- Dim winArray() As String
- '
- IsAppRunning = False
- For i = 1 To fEnumWindows(winArray)
- If InStr(1, winArray(i), appWindowCaption) > 0 Then
- IsAppRunning = True
- End If
- Next i
- End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д