Контроль / доступ к уже открытому браузеру с помощью формы vb - PullRequest
1 голос
/ 09 сентября 2011

Есть ли способ заставить настольное vb-приложение взять под контроль уже открытое окно браузера? Например, щелкните мышью по определенным координатам в окне или проверьте, содержит ли окно определенные элементы.

Я смотрел на использование Microsoft Internet Controls (shdocvw) и MSHTML (IHTMLDocument2), но я пытаюсь понять, как получить доступ к элементам окна браузера (например, body.innnerHTML).

Ответы [ 2 ]

1 голос
/ 09 сентября 2011

Вы можете использовать AppActivate в VBScript, который вы можете использовать в VB.NET

     set WshShell = WScript.CreateObject("WScript.Shell")
     WshShell.Run "iexplore"
     WScript.Sleep 100
     WshShell.AppActivate "Windows Internet Explorer"
     WshShell.SendKeys "~"
     WScript.Sleep 500
     WshShell.SendKeys "www.google.com"

~ для TAB, и вы можете использовать sendkeys для эмуляции нажатий клавиш.

0 голосов
/ 12 сентября 2011

Добавление ссылок на библиотеку объектов Microsoft HTML и элементы управления Интернетом Microsoft

Option Explicit On

Public Class Form1

   'Functions used to set cursor location and mouse clicks
   Public Declare Auto Function SetCursorPos Lib "User32.dll" (ByVal X As Integer, ByVal Y As Integer) As Long
   Public Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
   Public Declare Auto Function ShowWindow Lib "user32" (ByVal _
   hwnd As Long, ByVal nCmdShow As Long) As Long

   'Constants used for cursor and mouse functions, and to maximize window
   Public Const SW_MAXIMIZE = 3
   Public Const MOUSEEVENTF_LEFTDOWN = &H2 ' left button down
   Public Const MOUSEEVENTF_LEFTUP = &H4 ' left button up
   Public Const MOUSEEVENTF_RIGHTDOWN = &H8 ' right button down
   Public Const MOUSEEVENTF_RIGHTUP = &H10 ' right button up    

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      'retrieve all the open instances of IE
      Dim shellWindows = New SHDocVw.ShellWindowsClass()
      Dim htmlInput As mshtml.HTMLInputElement
      'for each instance of IE
      For Each ie As SHDocVw.InternetExplorer In shellWindows
         'If the title of the IE window matches the designated title
         If ie.Document.title = "Page Title" Then
            'retrieve the control with the designated field id
            htmlInput = ie.Document.getElementById("fieldID")
            'if the control's inner html matches the designated text
            If htmlInput.innerHTML = "innerHTML" Then
               'show the IE window maximized and with focus
               ShowWindow(ie.HWND, SW_MAXIMIZE)
               'move the cursor to the designated x,y coordinates
               SetCursorPos(xCoord, yCoord)
               'left mouse click down and up
               mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
               mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
               'send the designated keyboard command
               My.Computer.Keyboard.SendKeys("keyboardCommand")
            End If
         End If
      Next
   End Sub
End Class
...