加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

VB 获取当前焦点所在的控件句柄

(2012-09-11 10:40:26)
标签:

it

分类: VB编程笔记

Option Explicit

Private Declare Function AttachThreadInput Lib "user32" (ByVal idAttach As Long, ByVal idAttachTo As Long, ByVal fAttach As Long) As Long

Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal Hwnd As Long, lpdwProcessId As Long) As Long

Private Declare Function GetForegroundWindow Lib "user32" () As Long

Private Declare Function GetFocus Lib "user32" () As Long


'----------------------------------------------------
'获取当前控件句柄
'----------------------------------------------------
'备注:
'----------------------------------------------------
Public Function GetHwnd() As Long
    Dim Hwnd As Long
    Dim PID As Long
    Dim TID As Long
    Dim hWndFocus As Long
            
    Hwnd = GetForegroundWindow
    
    If Hwnd Then
    
        TID = GetWindowThreadProcessId(Hwnd, PID)
        
        AttachThreadInput App.ThreadID, TID, True
        
        GetHwnd = GetFocus
        
        AttachThreadInput App.ThreadID, TID, False

    End If
    
End Function


------------------------------获取当前鼠标所在Hwnd

 

Option Explicit


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 Sub Timer1_Timer()

        Dim P     As POINTAPI, h       As Long

        

        '获取鼠标当前位置的坐标,以屏幕为坐标系

        GetCursorPos P

        

        '获取当前鼠标所在点所属窗口(控件)的句柄

        Text1 = WindowFromPoint(P.X, P.Y)

End Sub


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有