Private Const WM_ACTIVATEAPP = &H1C Private Const GWL_WNDPROC = (-4) Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Private m_lWndProc As Long
Public Sub WindowHook(hWnd As Long) m_lWndProc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf MessageCenter) End Sub
Public Sub WindowFree(hWnd As Long) SetWindowLong hWnd, GWL_WNDPROC, m_lWndProc End Sub
Private Function MessageCenter(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long If Msg = WM_ACTIVATEAPP Then If wParam Then Form1.OnAppActivate Else Form1.OnAppDeActivate End If End If MessageCenter = CallWindowProc(m_lWndProc, hWnd, Msg, wParam, lParam) End Function
'КОД ФОРМЫ
Private Sub Form_Load() WindowHook hWnd End Sub
Public Sub OnAppActivate() MsgBox "Добро пожаловать назад!" End Sub
Public Sub OnAppDeActivate() MsgBox "Покидаете программу?" End Sub
Private Sub Form_Unload(Cancel As Integer) WindowFree hWnd End Sub
Если Вас заинтересовала или понравилась информация программирование на Visual Basic - "Определение потрери/активизации фокуса прораммы", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу: Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!