Что нового

Какие команды есть у объекта Shell.Explorer.2 или как их посмотреть?

sss

Продвинутый
Сообщения
332
Репутация
96
Всем привет! Хочется создать небольшой браузер. Создал объект Shell.Explorer.2 (сам браузер). Кроме команды $IE.navigate($addr) ничего не знаю, а мне как минимум надо html считывать. Подскажите, как это сделать? Какие у этого объекта есть команды (или методы, как правильнее?) и можно ли у любого объекта, установленного в Windows, их узнать?
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
96
Благодарю за ссылку. Но тут еще сразу 2 вопроса:
1) Если я правильно понял, Events - это события? Как ими оперировать?
2) Не нашел в списке ничего похожего на считывание html. Можно ли это реализовать в этом объекте? И если нет, то как вообще это можно сделать
P.S: тык как на AutoIt сделать?
Код:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Dim $links[6]
$links[0]=0

$back_disable=1
$forward_disable=1

$oIE = ObjCreate("Shell.Explorer.2")

#Region ### START Koda GUI section ### Form=
$gui = GUICreate("Browser", 615, 438, 189, 135, $WS_MAXIMIZEBOX+$WS_SIZEBOX)
$gui_input_addr = GUICtrlCreateInput("www.yandex.ru", 56, 8, 521, 21)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT+$GUI_DOCKRIGHT)
$gui_icon_backward = GUICtrlCreateIcon("back_dis.ico", -1, 8, 8, 22, 22)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
$gui_icon_forward = GUICtrlCreateIcon("next_dis.ico", -1, 32, 8, 22, 22)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
$gui_icon_go = GUICtrlCreateIcon("go.ico", -1, 584, 8, 22, 22)
GUICtrlSetResizing(-1,$GUI_DOCKTOP+$GUI_DOCKHEIGHT+$GUI_DOCKWIDTH+ $GUI_DOCKRIGHT)
$gui_ActiveX = GUICtrlCreateObj ($oIE, 8, 35, 601, 370)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

$cur_link='http://www.yandex.ru'
$cur_pos=0
$oIE.navigate("http://www.yandex.ru")

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        case $gui_icon_go
            $cur_pos=0
            my_SetNewBackLink($cur_link)
            $addr=GUICtrlRead($gui_input_addr)
            If StringInStr($addr,'http://')=0 and StringInStr($addr,'https://')=0 and StringInStr($addr,'ftp://')=0 then $addr='http://' & $addr
            my_Backward_Disable(0)
            $cur_link=$addr
            $oIE.navigate($addr)
        case $gui_icon_backward
            If $back_disable=0 then
                my_SetNewBackLink($cur_link)
                my_Backward()
                my_Forward_Disable(0)
            EndIf
        case $gui_icon_forward
            If $forward_disable=0 then my_Forward()



    EndSwitch
WEnd

Func my_SetNewBackLink($link)
    If $links[0]=0 Then
        $links[1]=$link
        $links[0]=1
    ElseIf $links[0]<5 and $links[0]>0 Then
        $links[$links[0]+1]=$link
        $links[0]=$links[0]+1
    elseif $links[0]=5 Then
        $links[1]=$links[2]
        $links[2]=$links[3]
        $links[3]=$links[4]
        $links[4]=$links[5]
        $links[5]=$link
    EndIf
EndFunc

Func my_Backward()
    $cur_pos=$cur_pos+1
    $temp=$links[0]+1-$cur_pos
    if $temp=1 then my_Backward_Disable(1)
    GUICtrlSetData($gui_input_addr,$links[$temp])
    $oIE.navigate($links[$temp])
EndFunc

Func my_Forward()
    $cur_pos=$cur_pos-1
    $temp=$links[0]+1-$cur_pos
    if $temp=$links[0] then my_Forward_Disable(1)
    GUICtrlSetData($gui_input_addr,$links[$temp])
    $oIE.navigate($links[$temp])
EndFunc

Func my_Backward_Disable($flag)
    Switch $flag
        case 1
            $back_disable=1
            GUICtrlSetImage($gui_icon_backward,'back_dis.ico')
        case 0
            $back_disable=0
            GUICtrlSetImage($gui_icon_backward,'back.ico')
    EndSwitch
EndFunc

Func my_Forward_Disable($flag)
    Switch $flag
        case 1
            $forward_disable=1
            GUICtrlSetImage($gui_icon_forward,'next_dis.ico')
        case 0
            $forward_disable=0
            GUICtrlSetImage($gui_icon_forward,'next.ico')
    EndSwitch
EndFunc
 

XpycT

Скриптер
Сообщения
380
Репутация
133
Sky-WaLkeR
1) Вот скрипт который показывает срабатывание некоторых событий
Код:
#Region Includes
#include <GUIConstantsEx.au3>
#EndRegion Includes
#NoTrayIcon

Global $oShell = ObjCreate("Shell.Explorer.2")
Global $oShellEvent = ObjEvent($oShell, "_Shell_", "DWebBrowserEvents2")

$Form1 = GUICreate("Form1", 625, 450, -1, -1)
$Shell = GUICtrlCreateObj($oShell, 0, 0, 625, 450)

$oShell.Navigate("http://www.yandex.ru")

GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd


Func _Shell_ProgressChange($iProgress, $iProgressMax)
  ConsoleWrite("+======================================================" & @CR & _
               "-_Shell_ProgressChange" & @CR & _
               "-->$iProgress:" & @TAB & $iProgress & @CR & _
               "-->$iProgressMax:" & @TAB & $iProgressMax & @CR & _
               "+======================================================")
EndFunc

Func _Shell_BeforeNavigate2($oShell, $sURL, $sFlags, $sTargetFrameName, $sPostData, $sHeaders)
  ConsoleWrite("+======================================================" & @CR & _
               "-_Shell_BeforeNavigate2" & @CR & _
               "-->$oShell:" & @TAB & $oShell & @CR & _
               "-->$sURL:" & @TAB & $sURL & @CR & _
               "-->$sFlags:" & @TAB & $sFlags & @CR & _
               "-->$sTargetFrameName:" & @TAB & $sTargetFrameName & @CR & _
               "-->$sPostData:" & @TAB & $sPostData & @CR & _
               "-->$sHeaders:" & @TAB & $sHeaders & @CR & _
               "+======================================================")
EndFunc

Func _Shell_NavigateComplete2($oShell, $sURL)
  ConsoleWrite("+======================================================" & @CR & _
               "-_Shell_NavigateComplete2" & @CR & _
               "-->$oShell:" & @TAB & $oShell & @CR & _
               "-->$sURL:" & @TAB & $sURL & @CR & _
               "+======================================================")
EndFunc

2) Я считываю html вот так
Код:
$oShell.Document.Body.InnerHTML
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
96
Класс! То, что надо! Спасибо большое! А какие еще есть команды (или методы, как их там) для этого объекта? Например, переход на предыдущую страницу, переход на следующую страницу... Или это надо реализовывать самому?
 

darkwhite

Знающий
Сообщения
129
Репутация
5
недавно задумался ) а чем собственно отличается Shell.Explorer.2 от
Код:
_IECreateEmbedded

:IL_AutoIt_1:
 

XpycT

Скриптер
Сообщения
380
Репутация
133
Sky-WaLkeR
Вот тут есть описание методов и событий на русском и с примерами для VBS.
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
96
Вау! XpycT, то что надо!Спасибо большое!
Всем спасибо огромное за ответы, вопрос решен!
 
Верх