只好用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
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
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货