Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPrivate Const WM_KILLFOCUS = &H8Private Sub Command1_GotFocus()
    SendMessage Command1.hwnd, WM_KILLFOCUS, 0, 0
End Sub

解决方案 »

  1.   

    Private Sub Form_Load()
        Hook cmdNoFocus.hWnd
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        UnHook
    End Sub
    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 LongPublic Const GWL_WNDPROC = (-4)
    Public Const WM_SETFOCUS = &H7Private OldProc&
    Private mhWnd&'==================================================
    '回调
    Function WinProc&(ByVal hWnd&, ByVal wMsg&, _
                      ByVal wParam&, ByVal lParam&)
                      
        Select Case wMsg
            Case WM_SETFOCUS
                Exit Function
        End Select
        
        WinProc& = CallWindowProc(OldProc, hWnd, wMsg, wParam, lParam)
    End Function
    '==================================================
    '==================================================
    '挂钩
    Sub Hook(ByVal nhWnd&)    If OldProc <> 0 Then Exit Sub
        
        mhWnd& = nhWnd&
        
        OldProc = SetWindowLong(nhWnd&, GWL_WNDPROC, AddressOf WinProc)End Sub
    '==================================================
    '==================================================
    '脱钩
    Sub UnHook()    If OldProc = 0 Then Exit Sub    SetWindowLong mhWnd, GWL_WNDPROC, OldProc
        OldProc = 0
    End Sub
    '==================================================