Как из VB определить запущен или нет Word?

Узнай цену своей работы

Формулировка задачи:

Как из VB определить запущен или нет Word?

Решение задачи: «Как из VB определить запущен или нет Word?»

textual
Листинг программы
  1. Public Declare Function apiGetDesktopWindow Lib 'user32' Alias 'GetDesktopWindow' () As Long
  2. Public Declare Function apiGetWindow Lib 'user32' Alias 'GetWindow' (ByVal Hwnd As Long, ByVal wCmd As Long) As Long
  3. Public Declare Function apiGetWindowLong Lib 'user32' Alias 'GetWindowLongA' (ByVal Hwnd As Long, ByVal nIndex As Long) As Long
  4. Public Declare Function apiGetWindowText Lib 'user32' Alias 'GetWindowTextA' (ByVal Hwnd As Long, ByVal lpString As String, ByVal aint As Long) As Long
  5. Public Const mcGWCHILD = 5
  6. Public Const mcGWHWNDNEXT = 2
  7. Public Const mcGWLSTYLE = (-16)
  8. Public Const mcWSVISIBLE = &H10000000
  9. Public Const mconMAXLEN = 255
  10. '
  11. Public Function fEnumWindows(ByRef winArr() As String)
  12.     Dim lngx As Long, lngLen As Long
  13.     Dim lngStyle As Long, strCaption As String
  14.     Dim n As Integer
  15. '    
  16.    ReDim winArr(1 To 1000)
  17.     n = 0
  18. '    
  19.    lngx = apiGetDesktopWindow()
  20.     'Return the first child to Desktop
  21.    lngx = apiGetWindow(lngx, mcGWCHILD)
  22. '    
  23.    Do While Not lngx = 0
  24.         strCaption = fGetCaption(lngx)
  25.         If Len(strCaption) > 0 Then
  26.             lngStyle = apiGetWindowLong(lngx, mcGWLSTYLE)
  27.             'enum visible windows only
  28.            If lngStyle And mcWSVISIBLE Then
  29.                 n = n + 1
  30.                 winArr(n) = fGetCaption(lngx)
  31.             End If
  32.         End If
  33.         lngx = apiGetWindow(lngx, mcGWHWNDNEXT)
  34.     Loop
  35. '    
  36.    If n > 0 Then ReDim Preserve winArr(1 To n)
  37.     fEnumWindows = n
  38. '    
  39. End Function
  40. '
  41. Public Function fGetCaption(Hwnd As Long)
  42.     Dim strBuffer As String
  43.     Dim intCount As Integer
  44. '    
  45.    strBuffer = String$(mconMAXLEN - 1, 0)
  46.     intCount = apiGetWindowText(Hwnd, strBuffer, mconMAXLEN)
  47.     If intCount > 0 Then
  48.         fGetCaption = Left$(strBuffer, intCount)
  49.     End If
  50. End Function
  51. '
  52. Sub Main()
  53.     Dim i As Integer, appTitle As String
  54.     Dim winArray() As String
  55. '    
  56.    appTitle = InputBox('Введите заголовок приложения', 'Запущено ли приложение?', _
  57.                         'Microsoft Word')
  58. '    
  59.    ' Перечисление заголовков окон запущенных и видимых приложений (если надо):
  60.    For i = 1 To fEnumWindows(winArray)
  61.         Debug.Print winArray(i)
  62.     Next i
  63. '    
  64.    ' Определение, запущено ли приложение:
  65.    If IsAppRunning(appTitle) Then
  66.         MsgBox 'Приложение ' + appTitle + ' запущено!', vbInformation, 'Информация'
  67.    Else
  68.         MsgBox 'Приложение ' + appTitle + ' не запущено.', vbInformation, 'Информация'
  69.    End If
  70. '    
  71. End Sub
  72. '
  73. Public Function IsAppRunning(ByVal appWindowCaption As String) As Boolean
  74.     Dim i As Integer
  75.     Dim winArray() As String
  76. '    
  77.    IsAppRunning = False
  78.     For i = 1 To fEnumWindows(winArray)
  79.         If InStr(1, winArray(i), appWindowCaption) > 0 Then
  80.             IsAppRunning = True
  81.         End If
  82.     Next i
  83. End Function

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.923 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы