通过getforegroundwindow可以得到激活窗口的句柄,我现在是想要得到它里面具体窗口的句柄,如你鼠标所指到的是一个按扭,用最快的方法得到它的句柄,如果用getcursorpos的方法只能得到和getforegroundwindow一样主窗口的句柄,如果说再用enumchildwindow的话,要是太多控件的话那就用你枚举的了.
要看关键原码

解决方案 »

  1.   

    试试ChildWindowFromPoint或ChildWindowFromPointEx函数。
      

  2.   


    注意 WindowFromPoint 取不到窗口状态为 Enabled 的句柄Option Explicit
    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 LongPrivate Type POINTAPI
            x As Long
            y As Long
    End TypePrivate Sub Timer1_Timer()
        Dim lpPoint As POINTAPI
        Dim hWnd As Long
        Timer1.Interval = 1000
        GetCursorPos lpPoint
        hWnd = WindowFromPoint(lpPoint.x, lpPoint.y) 
    End Sub
      

  3.   

    谢shadowsky你可能没有看清楚我发的问题吧,如果button的enabled=false的话,你的方法只能得到主窗口的handle的.第一位老兄的主法我倒没有试过,如果你说的方法的话,那不是还要用getclassname还得到它的类名吗?还有就是如果用Getwindowtext的方法,就是不怎么行了,因为它的caption是变化不定的.
      

  4.   

    不可能的。我在win2k下试过了n次,如果button enabled=fasle就是抓到明天也不行呀
      

  5.   

    Button Enabled=False 可能没什么办法。给你一个我编的软件,你绝对用得上。把邮箱留下。
      

  6.   

    你可以在Button的Enabled=True 的时候获得它的句柄,然后存起来。
    当它的Enabled=False的时候,虽然不可用,但你仍然可以对该句柄进行操作。
      

  7.   

    用这个试试!
    Public Declare Function ChildWindowFromPointEx Lib "user32" Alias "ChildWindowFromPointEx" (ByVal hWnd As Long, ByVal pt As POINTAPI, ByVal un As Long) As Long
    【说明】
    返回父窗口中包含了指定点的第一个子窗口的句柄
    【返回值】
    Long,发现包含了指定点的第一个子窗口的句柄。如未发现任何窗口,则返回hWnd(父窗口的句柄)。如指定点位于父窗口外部,则返回零
    【参数表】
      hWnd -----------  Long,父窗口的句柄
      xPoint
      Long,点的X坐标,以像素为单位
      yPoint
      Long,点的Y坐标,以像素为单位  pt -------------  POINTAPI,点的坐标,以像素为单位  un -------------  Long,(只适用于ChildWindowFromPointEx)控制对窗口的搜索。参见下表
      CWP_ALL
      测试所有窗口
      CWP_SKIPINVISIBLE
      忽略不可见窗口
      CWP_SKIPDISABLED
      忽略已屏蔽的窗口
      CWP_SKIPTRANSPARENT
      忽略透明窗口
    思路:1、先获得主窗体hwnd
          2、用GetWindowRect获得左上角坐标
          3、用ChildWindowFromPointEx 获得句柄
      

  8.   

    #define CWP_ALL             0x0000
    #define CWP_SKIPINVISIBLE   0x0001
    #define CWP_SKIPDISABLED    0x0002
    #define CWP_SKIPTRANSPARENT 0x0004