Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Как послать клик мыши во фрейм страницы


Автор: eugene2007 14.6.2007, 05:25
Я хочу невидимо контроллировать webbrowser control iwebbrowser2  в своём приложнии
Как послать клик мыши в веббраузер, проблема в том что когда шлю sendmessage то он кликает если простоя страничка хтмл без iframe/frame. НА фрейм или ифрейм не кликает
Помогите советом!
Я не хочу парсить хтмл страницу и кликать так body.outerhtml, tagname ("A").click

Код

Private Sub Command2_Click()

Dim lHandle As Long
lHandle = GetHandle(ie)
MsgBox lHandle

SendClick lHandle, Val(Text2.Text), Val(Text3.Text)
End Sub

Public Sub SendClick(lnghWND As Long, X As Long, Y As Long)
    Dim lngResult As Long
    Dim lnglParam As Long
    lnglParam = (Y * &H10000) + X
    lngResult = SendMessage(lnghWND, WM_LBUTTONDOWN, 0&, ByVal lnglParam)
    lngResult = SendMessage(lnghWND, WM_LBUTTONUP, 0&, ByVal lnglParam)
    txtlog.Text = lnghWND & " " & X & " " & Y & vbCrLf & txtlog.Text
End Sub

Автор: Akina 14.6.2007, 08:19
Цитата(eugene2007 @  14.6.2007,  06:25 Найти цитируемый пост)
Я не хочу парсить хтмл страницу 

Хочешь послать клик во фрейм? парси...

Автор: eugene2007 21.6.2007, 22:47
а можно без парсинга? раз фрейм это новое окно как его обнаружить?

Автор: eugene2007 22.6.2007, 03:33
Нашёл код обнаруживающий HWND окна броузер контрола, а как обнаружить его iframes, frames?


Код

Dim lHandle As Long
lHandle = GetHandle(ie)
MsgBox lHandle

module
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam 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 lngWebHandle As Long
 


Public Function GetHandle(ByVal WebControl As WebBrowser) As Long
    lngWebHandle = 0
    EnumChildWindows WebControl.Parent.hWnd, AddressOf EnumChildProc, ByVal 0&
    GetHandle = lngWebHandle
End Function


Private Function EnumChildProc(ByVal hWnd As Long, ByVal lParam As Long) As Long
    Dim lngReturnValue As Long, strClassName As String
    strClassName = Space(256)
    lngReturnValue = GetClassName(hWnd, strClassName, 256)
    If Left$(strClassName, lngReturnValue) = "Internet Explorer_Server" Then
        lngWebHandle = hWnd
    End If
    EnumChildProc = 1
End Function


Автор: Akina 22.6.2007, 09:03
Цитата(eugene2007 @  21.6.2007,  23:47 Найти цитируемый пост)
фрейм это новое окно 

Это откуда такие сведения?

Автор: eugene2007 25.6.2007, 14:22
potomuchto ja pytalsja poslatt tuda sendmessage a vo frame ne shljotsja
kak poslatt vo frame klik?

Автор: Akina 25.6.2007, 15:26
Фрейм на странице - это аналог подчиненной формы на основной... посмотри в ObjectBrowser иерархию (прямо в рантайме) и исходя из этого построй путь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)