|
Подсчитать количество копий запущенной программы |
|
|
Данный пример покажет, как можно подсчитать
количество запущенных окон броузера Microsoft Internet
Explorer. Только одна проблема:
при вторичном исполнении кода происходит
суммирование с предыдущими результатами
подсчета. Если найдется желающий докопаться до
ошибки, пришлите мне исправленный
вариант.
Расположите на форме элемент CommandButton,
а также добавьте дополнительный отдельный модуль. 'КОД ФОРМЫ
Private Sub Command1_Click()
Dim iIEInstances As Integer
iIEInstances = AppInstances("Microsoft Internet Explorer")
MsgBox iIEInstances
End Sub
'КОД МОДУЛЯ
Option Compare Text
Private Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long,
ByVal lParam As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias
"GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As
Long) As Long
Private pbExact As Boolean
Private psAppString As String
Private piAppCount As Integer
Public Function AppInstances(AppNamePart As String, Optional ExactMatchOnly As Boolean) As
Integer
'параметры:
'AppNamePart = любая часть заголовка или приложения
'пример использования
'dim iIEInstances as integer
'iIEInstances = AppInstances("Microsoft Internet Explorer")
Dim lRet As Long
psAppString = AppNamePart
pbExact = ExactMatchOnly
lRet = EnumWindows(AddressOf CheckForInstance, 0)
AppInstances = piAppCount
End Function
Private Function CheckForInstance(ByVal lhWnd As Long, ByVal lParam As Long) As Long
Dim sTitle As String
Dim lRet As Long
Dim iNew As Integer
sTitle = Space(255)
lRet = GetWindowText(lhWnd, sTitle, 255)
sTitle = StripNull(sTitle)
If sTitle <> "" Then
If pbExact Then
If sTitle = psAppString Then piAppCount = piAppCount + 1
Else
If InStr(sTitle, psAppString) > 0 Then piAppCount = piAppCount + 1
End If
End If
CheckForInstance = True
End Function
Private Function StripNull(ByVal InString As String) As String
Dim iNull As Integer
If Len(InString) > 0 Then
iNull = InStr(InString, vbNullChar)
Select Case iNull
Case 0
StripNull = InString
Case 1
StripNull = ""
Case Else
StripNull = Left$(InString, iNull - 1)
End Select
End If
End Function
|
|
|
|
|
|
|