Что нового

Какие команды есть у объекта 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
Репутация
132
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
Класс! То, что надо! Спасибо большое! А какие еще есть команды (или методы, как их там) для этого объекта? Например, переход на предыдущую страницу, переход на следующую страницу... Или это надо реализовывать самому?
 

Zaramot

I ♥ AutoIt
Сообщения
1 160
Репутация
658
Код:
$oShell.Refresh
$oShell.GoHome
 

darkwhite

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

:IL_AutoIt_1:
 

XpycT

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

sss

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