Как проверить, запущена ли программа сейчас или нет по ее названию? (используя vb6) - PullRequest
3 голосов
/ 03 января 2011

Как проверить, запущена ли программа сейчас или нет по ее названию?(используя vb6)

Пример:

'check if there is a program contain a "Notepad" in its title

if (does "Notepad" running now ?) then 

end if

alt text

Ответы [ 4 ]

7 голосов
/ 03 января 2011
''# preparation (in a separate module)
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Public Function FindWindowHandle(Caption As String) As Long
  FindWindowHandle = FindWindow(vbNullString, Caption)
End Function

''# use (anywhere)
MsgBox FindWindowHandle("Untitled - Notepad")

Код выше в основном взят из здесь .

Точная подпись окна должна быть известна для этого.Функция вернет <> 0, если было найдено окно с заданным заголовком, в противном случае - 0.

Чтобы найти окно, заголовок которого содержит определенную строку, вам нужно будет перечислить все окнаи найдите правильный самостоятельно.Этот процесс немного сложнее, но здесь он подробно объясняется: everythingaccess.com - вывод окна внешнего приложения на передний план .

3 голосов
/ 03 января 2011

У Карла Петерсона есть отличный код для этого на его превосходном веб-сайте VB6. Он использует EnumWindows, как и ответ Томалака (в ссылке)

1 голос
/ 03 января 2011

Передайте ручку вашего приложения и частичную подпись. Он вернет true, если найден.

Public Function GetHandleFromPartialCaption(ByRef lWnd As Long, ByVal sCaption As String) As Boolean

Dim lhWndP            As Long
Dim sStr              As String

GetHandleFromPartialCaption = False
lhWndP = FindWindow(vbNullString, vbNullString)                                      'PARENT WINDOW

Do While lhWndP <> 0
    sStr = String(GetWindowTextLength(lhWndP) + 1, Chr$(0))
    GetWindowText lhWndP, sStr, Len(sStr)
    sStr = Left$(sStr, Len(sStr) - 1)
    If InStr(1, sStr, sCaption) > 0 Then
        GetHandleFromPartialCaption = True
        lWnd = lhWndP
        Exit Do
    End If
    lhWndP = GetWindow(lhWndP, GW_HWNDNEXT)
Loop

Функция завершения

0 голосов
/ 05 марта 2012

Теперь щелкните правой кнопкой мыши на панели задач и выберите диспетчер задач. Теперь покажите свою работающую программу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...