showModalDialog

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

showModalDialog

Сообщение Antonariy » 26.02.2006 (Вс) 10:40

Код: Выделить всё
Dim WithEvents doc as HTMLDocument

Sub Command1_Click()
Dim ie as New InternetExplorer
    ie.Visible = True
    ie.navigate "ya.ru"
    While ie.ReadyState <> READYSTATE_COMPLETE
        DoEvents
    Wend
    ie.Document.parentWindow.showModalDialog "ya.ru"
End Sub

Как получить в doc ссылку на HTMLDocument диалога с целью отлова событий?
Лучший способ понять что-то самому — объяснить это другому.

marvan
Бывалый
Бывалый
 
Сообщения: 269
Зарегистрирован: 22.06.2004 (Вт) 13:26
Откуда: Москва

Сообщение marvan » 26.02.2006 (Вс) 13:49

Наверно, нельзя.
Это тоже самое, что:
Код: Выделить всё
MsgBox "Как отловить клик по этому тексту?"

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 26.02.2006 (Вс) 14:27

Способ я нашел, только он немного через ж. Я подумал, может кто предложет что-нибудь отличное от моего.
Лучший способ понять что-то самому — объяснить это другому.

marvan
Бывалый
Бывалый
 
Сообщения: 269
Зарегистрирован: 22.06.2004 (Вт) 13:26
Откуда: Москва

Сообщение marvan » 27.02.2006 (Пн) 10:29

Antonariy писал(а):Способ я нашел, только он немного через ж. Я подумал, может кто предложет что-нибудь отличное от моего.


Если не секрет, то как?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 27.02.2006 (Пн) 12:16

Код: Выделить всё
Dim WithEvents doc as HTMLDocument

Sub Command1_Click()
Dim ie as New InternetExplorer
Dim doc1 As IHTMLDocument
    ie.Visible = True
    ie.navigate "ya.ru"
    While ie.ReadyState <> READYSTATE_COMPLETE
        DoEvents
    Wend

    Set doc1 = New HTMLDocument
    doc1.write "<html><body></body></html>"
    Set doc = doc1
    Kill App.path & "\mainframe.htm"
    WriteFile App.path & "\mainframe.htm", Replace(StrConv(LoadResData("mainframe", "custom"), vbUnicode), "***", "ya.ru")

    ie.Document.parentWindow.showModalDialog (App.path & "\mainframe.htm", doc)
End Sub

Private Sub doc_ondataavailable()
Dim h As Long
Dim d As HTMLDocument
    h = GetForegroundWindow
    Set d = IEDOMFromhWnd(h) 'Функция из статьи http://www.vbstreets.ru/VB/Articles/66050.aspx
    'здесь должно бы происходить окончательное присвоение переменной необходимого документа, но вместо этого происходит ошибка "Отказано в доступе"
    Set doc = d.frames(0).document
End Sub

Public Sub WriteFile(path As String, conts As String)
Dim r() As Byte
    r = StrConv(conts, vbFromUnicode)
    Open path For Binary As #1
    Put #1, , r
    Close #1
End Sub

'содержимое mainframe.htm
<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
      <script language="javascript">
         var doc=window.dialogArguments;
      </script>
   </head>
   <body bottommargin="0" leftmargin="0" rightmargin="0" topmargin="0" scroll="no" onload="doc.fireEvent('ondataavailable')">
      <iframe width="100%" height="100%" frameborder="0" marginheight="0" marginwidth="0" vspace="0" hspace="0" scrolling="auto" src="***">
      </iframe>
   </body>
</html>
Лучший способ понять что-то самому — объяснить это другому.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 131

    TopList