15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту




Как узнать, активно ли текущее приложение

' Объявление API функций
'
Private Declare Function GetForegroundWindow Lib “user32” 
() As Long
Private Declare Function GetWindowThreadProcessId Lib 
“user32” _
    (ByVal hwnd As Long, lpdwProcessId As Long) As Long


' Если приложение активно, то его заголовок синий и окно на переднем плане
' Если не активно, то заголовок серый и окно на заднем плане
'
Function IsActiveApp(frm As Form) As Boolean
    Dim RunningAppProcessID As Long
    Dim CurrentProcessID As Long

    ' Получаем ProcessID запущенного приложения через форму VB
    GetWindowThreadProcessId frm.hwnd, RunningAppProcessID

    ' Получаем ProcessID активного окна
    GetWindowThreadProcessId GetForegroundWindow(), CurrentProcessID

    ' Возвращаем True если оба ID совпадают
    IsActiveApp = (RunningAppProcessID = 
CurrentProcessID)
End Function


' для тестирования функции помещаем таймер на новую форму
'
Private Sub Timer1_Timer()
    If IsActiveApp(Me) Then
        Me.Caption = Time & “ “ & App.Title & 
“ is Active”
    Else
        Me.Caption = Time & “ “ & App.Title & 
“ is Inactive”
    End If
End Sub