Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> VBScript: Получение модального окна браузера 
:(
    Опции темы
Luceus
Дата 24.3.2008, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 24.3.2006

Репутация: нет
Всего: 1



Всем привет!


Разработчики реализовали на нажатии кнопки появление модального IE-окна - showModalDialog (кнопки на панели задачи этого окна нет). Данное окно есть дочерним главного IE-окна.

Как можно получить доступ к DOM-объекту страницы этого модального окна, если Hwnd как окна, так и IEBrowser_Server контрола я могу определить (я зарегистрировал несколько WinApi функций, которая возвращает хэндл последнего попап окна).

Спасибо за помощь.
PM MAIL WWW   Вверх
Luceus
Дата 25.3.2008, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 24.3.2006

Репутация: нет
Всего: 1



Никто не знает? Или я плохо описал проблему?
PM MAIL WWW   Вверх
TryLight
Дата 26.3.2008, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 26.8.2007

Репутация: нет
Всего: 1



О, эт тебе туда.
Только по-яснее опиши проблему: как получить доступ в тело модульного окна, открытого из IE.

Дело в том, что при открытии модульного окна управление передается в него, родительское ждет закрытия этого окна, поэтому откуда ты хочешь получить доступ? И зачем?
PM MAIL WWW   Вверх
Luceus
Дата 27.3.2008, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 24.3.2006

Репутация: нет
Всего: 1



TryLight, Я уже был там smile

Когда я нажимаю кнопку, я знаю, с каким браузером я работал. После этого, я вызываю WinApi функцию, которая определяет, нет ли модальных окон у главного окна. Если есть, я получаю ее хендл. После этого, я перебираю все дочерние объекты, и нахожу IEBrowser_Server. Теперь я знаю хендл браузера.

Я нашел решение на Visual Basic, но не знаю, как его перевести на VBScript:

Код

Option Explicit

Private Type UUID
   Data1 As Long
   Data2 As Integer
   Data3 As Integer
   Data4(0 To 7) As Byte
End Type

Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "User32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function ObjectFromLresult Lib "oleacc" (ByVal lResult As Long, riid As UUID, ByVal wParam As Long, ppvObject As Any) As Long
Private Declare Function RegisterWindowMessage Lib "User32" Alias "RegisterWindowMessageA" (ByVal lpString As String) As Long
Private Declare Function SendMessageTimeout Lib "User32" Alias "SendMessageTimeoutA" (ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, lParam As Any, ByVal fuFlags As Long, ByVal uTimeout As Long, lpdwResult As Long) As Long

Private Declare Function GetClassName Lib "User32" (ByVal hwnd As _
         Integer, ByVal lpClassName As String, ByVal nMaxCount As _
         Integer) As Integer

Private Declare Function GetWindowText Lib "User32" Alias "GetWindowTextA" (ByVal hwnd As _
         Integer, ByVal lpString As String, ByVal aint As Integer) As _
         Integer

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


Private Const SMTO_ABORTIFHUNG = &H2




Public WithEvents objDoc As HTMLDocument

' Create a web document object to control browser
'Private mhtmDoc3 As IHTMLDocument3
'Private WithEvents objDoc As HTMLDocument


Dim FocusHwnd As Long
Dim CurrentFocusWindowTitle As String * 255
Dim LastFocusWindowTitle As String * 255


Dim mx, my

Private Sub Command1_Click()
    Dim hwnd As Long
    '"coozzzzz - coozzzzz" is the title of the IM window
    hwnd = FindWindow("IEFrame", CurrentFocusWindowTitle)

    hwnd = FindWindowEx(hwnd, 0, "Shell DocObject View", vbNullString)

    hwnd = FindWindowEx(hwnd, 0, "Internet Explorer_Server", vbNullString)

    If hwnd > 0 Then
        Set objDoc = WindowDOM(hwnd)
        If Not (objDoc Is Nothing) Then
          Text1.Text = objDoc.body.innerText
          LastFocusWindowTitle = CurrentFocusWindowTitle
        End If
    End If

End Sub

Private Function WindowDOM(ByVal hwnd As Long) As IHTMLDocument
    Dim typUUID As UUID, lngRes As Long, lngMsg As Long
    lngMsg = RegisterWindowMessage("WM_HTML_GETOBJECT")
    If lngMsg <> 0 Then
        Call SendMessageTimeout(hwnd, lngMsg, 0, 0, SMTO_ABORTIFHUNG, 1000, lngRes)
        If lngRes <> 0 Then
            With typUUID
                .Data1 = &H626FC520
                .Data2 = &HA41E
                .Data3 = &H11CF
                .Data4(0) = &HA7
                .Data4(1) = &H31
                .Data4(2) = &H0
                .Data4(3) = &HA0
                .Data4(4) = &HC9
                .Data4(5) = &H8
                .Data4(6) = &H26
                .Data4(7) = &H37
            End With
            Call ObjectFromLresult(lngRes, typUUID, 0, WindowDOM)
        End If
    End If
End Function



Private Sub Timer1_Timer()
Dim a As Long
FocusHwnd = GetForegroundWindow
a = GetWindowText(FocusHwnd, CurrentFocusWindowTitle, Len(CurrentFocusWindowTitle))

If (CurrentFocusWindowTitle <> LastFocusWindowTitle) Then
Command1_Click
End If

End Sub


В каком направлении копать?  smile 
PM MAIL WWW   Вверх
TryLight
Дата 27.3.2008, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 26.8.2007

Репутация: нет
Всего: 1



Фух...

Вот этот скрипт октрывает окно и записывает туда "Hello, mir!"
Код

Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate "about:blank"

While objIE.Busy
    Wscript.Sleep 200
Wend

objIE.Visible = 1

objIE.document.write "Hello, mir!"

Попробуй в своем скрите написать hwds.docuemnt.write "BLA-BLA-BLA"
PM MAIL WWW   Вверх
Luceus
Дата 28.3.2008, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 24.3.2006

Репутация: нет
Всего: 1



TryLight, я пробовал данный способ, но так не получается. =(
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0425 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.