只好用API + Timer 控件  来实现'这部分供 ShellClass 用
Private TimerLable As Long
Private Type POINTAPI
        x As Long
        y As Long
End Type
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) 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 Const CB_SHOWDROPDOWN = &H14F
Private Sub Timer1_Timer()
    Dim PT_Mouse As POINTAPI
    Dim lCurHwnd As Long
    Dim lPrvHwnd As Long
    Dim lX As Long, lY As Long
    Dim tClassName As String
    Dim lResult As Long
    
    TimerLable = TimerLable + 1
    lPrvHwnd = 0
    
    Call GetCursorPos(PT_Mouse)  '获取Mouse位置
    lX = PT_Mouse.x
    lY = PT_Mouse.y
    lCurHwnd = WindowFromPoint(lX, lY) '获取Mouse箭头下窗口的句柄
    If lCurHwnd <> lPrvHwnd Then '若两值不等则说明经过不同的窗口,保存新值
        lPrvHwnd = lCurHwnd
        tClassName = String$(256, " ") '注意引号中间有空格
        lResult = GetClassName(lCurHwnd, tClassName, 255) '这两句取出类名
        tClassName = Left$(tClassName, InStr(tClassName, vbNullChar) - 1)
        
        If lCurHwnd = lable1.hwnd Then  'mouse 移动到 Lable1 上
             你的程序代码
        End If
    End If
        
    DoEvents
End SubTimer1 的事件间隔时间为 5 ~ 50