000F (Posted)
WM_PAINT
Public Function WndProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long)
Select Case uMsg
Case WM_PAINT:
Call BeginPaint(hwnd ,Paint)
'...
' Здесь код обработки сообщения
'...
Call EndPaint(hwnd, Paint)
WndProc = 0
Case Else:
WndProc = DefWindowProc(hwnd, uMsg, wParam, lParam)
End Select
End Function
dr.MIG писал(а):Сабклассим чужое окно?...
dr.MIG писал(а):Потому что низя... Чужое...
GorYU писал(а):При смене цвета окна spy++ улавливает сообщение от окна WM_PAINT, при этом не требуется, чтобы окно было на виду - это надо, но не знаю, как программно отловить.
jangle писал(а):Хук на WH_CALLWNDPROC этого приложения, и самому ловить WM_PAINT
GorYU писал(а):Насколько я понял надо грамотно вызвать SetWindowsHookEx после чего принимать и обрабатывать сообщения от окна, WM_PAINT и другие.
Private Const WM_KEYDOWN = &H100
Private Function HookProc(ncode As Long, wParam As Long, lParam As Long) As Long
If ncode < 0 Then
HookProc = CallNextHookEx(0&, ncode, wParam, lParam)
If lParam = WM_KEYDOWN Then
'Это для проверки...
MsgBox ("Key Down = " & ncode & " " & wParam & " " & lParam)
End If
End If
HookProc = CallNextHookEx(0&, ncode, wParam, lParam)
End Function
Private Sub HOOKKEY_Click()
hLib = LoadLibrary("hook.dll")
hProc = GetProcAddress(hLib, "hookproc") 'здесь у меня загвоздка возвращает 0, видимо проблема со вторым параметром...
hHook = SetWindowsHookEx(WH_KEYBOARD, hProc, hLib, 0&)
End Sub
Private Sub UNLOADPROG_Click()
If hHook Then UnhookWindowsHookEx (hHook)
If hLib Then FreeLibrary (hLib)
End Sub
Public Function HookProc(ncode As Long, wParam As Long, lParam As Long) As Long
hLib = LoadLibrary(App.Path & "\Hook.dll")
hProc = GetProcAddress(hLib, "HookProc")
hHook = SetWindowsHookEx(WH_KEYBOARD, hProc, hLib, 0&)
hLib = LoadLibrary(App.Path & "\Hook.dll")
hProc = GetProcAddress(hLib, "HookProc")
Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 123