why sendmessage() crashes my VB6?(instead use the sendmessage(), i use the debug, the VB6 don't crashes)Code:Option Explicit Private PrevWin2 As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal HWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long 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 Const GWL_WNDPROC = (-4) Public UsercontrolHandle As Long Private Const WM_PAINT = &HF Private Const WM_KEYDOWN = &H100 Private Const WM_CLOSE = &H10 Private Const WM_DESTROY = &H2 Private Function Proc2(ByVal HWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long If Msg = WM_PAINT Then SendMessage HWnd, WM_KEYDOWN, 1000, 0 'Debug.Print "hi" ElseIf Msg = WM_DESTROY Then Unhook2 HWnd End If Proc2 = CallWindowProc(PrevWin2, HWnd, Msg, wParam, lParam) End Function Public Sub Hook2(Handle As Long) If PrevWin2 = 0 Then PrevWin2 = SetWindowLong(Handle, GWL_WNDPROC, AddressOf Proc2) End If End Sub Public Sub Unhook2(Handle As Long) If PrevWin2 Then Call SetWindowLong(Handle, GWL_WNDPROC, PrevWin2) PrevWin2 = 0 End If End Sub



Reply With Quote

