Const WM_ACTIVATE =&H6
Сообщение WM_ACTIVATE посылается окну при активизации или деактивизации через функцию обратного вызова WindowProc
WA_ACTIVE = 1 | Окно становится активным |
WA_CLICKACTIVE = 2 | Окно становится активным при щелчке мышью |
WA_INACTIVE = 0 | Окно деактивизируется |
' Поместите код в модуль, ' т.к. используется функция обратного вызова Public OldWindowProc As Long 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 Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _ (ByVal hwnd As Long, ByVal nIndex As Long, _ ByVal dwNewLong As Long) As Long Public Const GWL_WNDPROC = (-4) Public Const WM_ACTIVATE = &H6 Public Const WA_ACTIVE = 1 Public Const WA_CLICKACTIVE = 2 Public Const WA_INACTIVE = 0 Public Function WindowProc(ByVal hwnd As Long, _ ByVal msg As Long, ByVal wParam As Long, _ ByVal lParam As Long) As Long If msg = WM_ACTIVATE Then If (wParam = WA_ACTIVE Or wParam = WA_CLICKACTIVE) Then ' При активизации меняем цвет формы Form1.BackColor = vbRed Else Form1.BackColor = vbGreen End If End If WindowProc = CallWindowProc( _ OldWindowProc, hwnd, msg, wParam, _ lParam) End Function ' Поместите код в событие Form_Load OldWindowProc = SetWindowLong( _ hwnd, GWL_WNDPROC, _ AddressOf WindowProc)