Const WM_SYSCOMMAND = &H112
Окно получает сообщение WM_SYSCOMMAND, когда пользователь выбирает элемент системного меню или пользователь нажимает кнопки Свернуть, Развернуть, Закрыть
Сообщение WM_SYSCOMMAND всегда возвращает 0
' Запускаем хранитель экрана SendMessage hwnd, WM_SYSCOMMAND, ByVal SC_SCREENSAVE, ByVal 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, lParam As WINDOWPOS) 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) Type WINDOWPOS hwnd As Long hWndInsertAfter As Long x As Long y As Long cx As Long cy As Long flags As Long End Type
' Обработка сообщения Public Function NewWindowProc(ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, lParam As WINDOWPOS) As Long Const WM_SYSCOMMAND = &H112 Const SC_SIZE = &HF000& ' Если сообщение WM_SYSCOMMAND If msg = WM_SYSCOMMAND Then ' Если команда SC_SIZE, то игнорируем If (wParam And &HFFF0) = SC_SIZE Then Exit Function End If NewWindowProc = CallWindowProc( _ OldWindowProc, hwnd, msg, wParam, _ lParam) End Function
' Код для Form_Load OldWindowProc = SetWindowLong( _ hwnd, GWL_WNDPROC, _ AddressOf NewWindowProc)