我的问题是这样的,
在桌面上打开了一个网页,在某个特定的位置(X,Y)上,
我是否可以写程序去判断该位置上是不是一个输入框,或者按纽,或者其他
并且该输入框或标签上的文字什么等?

解决方案 »

  1.   

    你可以使用一个Timer控件定时获得当前鼠标位置,然后根据位置获得该位置上的控件句柄,再根据控件句柄获得类名和文本,最后根据类名判断控件类型。
    但是,如果是要判断WEBBROWSER控件中网页元素的类型,则需要编写脚本来判断,我这里先给你写一个获得VB窗口上控件的代码,脚本程序过两天再写。
    Option ExplicitPrivate 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 GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As LongPrivate Type POINTAPI
            x As Long
            y As Long
    End TypePrivate Sub Form_Load()
        Me.WebBrowser1.Navigate2 "http://www.baidu.com"
    End SubPrivate Sub Timer1_Timer()
        Dim curPos As POINTAPI
        Dim ctlWnd As Long
        Dim szClass As String, szText As String
        
        szClass = Space(100)
        szText = Space(100)
        GetCursorPos curPos
        ctlWnd = WindowFromPoint(curPos.x, curPos.y)
        GetClassName ctlWnd, szClass, 100
        szClass = Left(szClass, InStr(szClass, Chr(0)) - 1)
        GetWindowText ctlWnd, szText, 100
        szText = Left(szText, InStr(szText, Chr(0)) - 1)
        
        Select Case szClass
            Case "ThunderFormDC" 'VB窗体
            Case "ThunderCommandButton" 'VB按钮
            Case "ThunderTextBox" 'VB文本框
            Case "ThunderPictureBoxDC" 'VB图片框
            Case "Edit" 'VB下拉框
            Case "ThunderListBox" 'VB列表框
            Case "ThunderOptionButton" 'VB单选框
            Case "ThunderCheckBox" 'VB复选框
            Case Else '其它的不再列出
        End Select
                
        Debug.Print szClass, szText
    End Sub
      

  2.   

    你也可以先看一个DOM和SCRIPT的资料。