Показать полную графическую версию : IE embadded, как найти чужой?
Здравствуйте, подскажите плз.
Есть программа, она в своем окне юзает IE компоненты (ну вроде IE_embaded), подскажите плз как именно его найти и использовать как свое окно, как будто я сделал IE_Create ?
заранее благодарен.
DjinnKo, ууууу, класс! самая классная задача - угадать, что же вы подразумеваите ))
И так, есть пример в справке на _IECreateEmbedded
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
_IEErrorHandlerRegister ()
$oIE = _IECreateEmbedded ()
GUICreate("Embedded Web control Test", 640, 580, _
(@DesktopWidth - 640) / 2, (@DesktopHeight - 580) / 2, _
$WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS + $WS_CLIPCHILDREN)
$GUIActiveX = GUICtrlCreateObj($oIE, 10, 40, 600, 360)
$GUI_Button_Back = GUICtrlCreateButton("Back", 10, 420, 100, 30)
$GUI_Button_Forward = GUICtrlCreateButton("Forward", 120, 420, 100, 30)
$GUI_Button_Home = GUICtrlCreateButton("Home", 230, 420, 100, 30)
$GUI_Button_Stop = GUICtrlCreateButton("Stop", 340, 420, 100, 30)
GUISetState() ;Show GUI
_IENavigate ($oIE, "http://www.autoitscript.com")
; Waiting for user to close the window
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $GUI_Button_Home
_IENavigate ($oIE, "http://www.autoitscript.com")
Case $msg = $GUI_Button_Back
_IEAction ($oIE, "back")
Case $msg = $GUI_Button_Forward
_IEAction ($oIE, "forward")
Case $msg = $GUI_Button_Stop
_IEAction ($oIE, "stop")
EndSelect
WEnd
GUIDelete()
Exit
1) что в нем не так?
2) что к нему прикрутить?
3) куда?
4) Как именно?
5) в Каком виде?
6) что именно?
о_О
Постараюсь объяснить понятно.
Есть программа, у нее как раз и используется:
>>>> Control <<<<
Class: Internet Explorer_Server
Instance: 1
ClassnameNN: Internet Explorer_Server1
Advanced (Class): [CLASS:Internet Explorer_Server; INSTANCE:1]
ID:
Text:
Handle: 0x00050CD0
Вот мне ндо как-то его использовать. и желательно конечно получить хендел как после:
_IECreate
чтобы я мог использовать ф-и вроде:
_IEFormElementSetValue
Вот, так надеюсь понятно.
Спасибо что отозвался :)
Вот, так надеюсь понятно. »
да )
Хендл можно получить так: ControlGetHandle(хэндл_окна, '', '[CLASS:Internet Explorer_Server; INSTANCE:1]')
а уж как себя поведут _IEFormElementSetValue и т.д. - стоит проверить....
Спасибо что отозвался
пожалуйста )
проверю и сообщу что и как :)
WinWait("сесе")
$wh = WinGetHandle ( "сесе" )
If @error Then
MsgBox(4096, "Error", "Could not find the correct window")
EndIf
$ch = ControlGetHandle($wh, '', '[CLASS:Internet Explorer_Server; INSTANCE:1]')
If @error Then
MsgBox(4096, "Error", "Could not find the correct window")
EndIf
$HTML = _IEBodyReadHTML ($ch)
ConsoleWrite($HTML)
MsgBox - не показывает, но ;HTML = 0 и
--> IE.au3 V2.4-0 Error from function _IEBodyReadHTML, $_IEStatus_InvalidDataType
proxy, подскажи плз что я не так сделал... или может есть еще варианты ?
Сделал все правильно. А проблема в том, что для функций _IEBodyReadHTML и т.д., необходимо указывать не хендл элемента, а объект на элемент.
Как поучить указатель на сторонний объект, в данном случае на IE типа _IECreateEmbedded, не знаю.
а есть возможность как-то посторонними путями вытащить исходный код страници и как использовать все элементы чтобы заполнять и выделять что нужно (чекбоксы, тектовые поля...) ?
Люди, никто не знает как решить эту проблему ?
исходный код страници »
это все в том же стороннем объекте IE?....
а использовать свой IE или _INetGetSource невозможно?
нет, нужно конкретно переловить то окно.
ну или полностью имитировать его работу... как переловить пути куда он и что шлет ? ну и соответственно ка кимитировать POST запрос в AutoIt ?
ну и соответственно ка кимитировать POST запрос в AutoIt ? »
вот именно POSt нужен? GET не подойдет - _INetGetSource
по поводу POST запросов можно попробовать это (http://www.autoitscript.com/forum/index.php?showtopic=84133&st=0) / и это (http://www.autoitscript.com/forum/index.php?showtopic=84133&view=findpost&p=610967)
а как можно увидеть куда он обращается чтобы это все имитировать ?
и может есть всеже возможность как-то контролировать IE компонент нужной программы... ?
P.S. снифер использовать не рентабельно, много муссора словит... что есть нормальное для таких целей ?
P.S. снифер использовать не рентабельно, много муссора словит... что есть нормальное для таких целей ? »
имхо, уж в этом направление заменить запросы сторонней программы - мега гемор )
а как можно увидеть куда он обращается чтобы это все имитировать ?
и может есть всеже возможность как-то контролировать IE компонент нужной программы... ? »
да думаю можно и тут, тока не в силах я тебе помочь ))) Главное узнать технологию, как получить указатель на объект, созданный в стороннем приложении. А уж на AutoIt можно мнооооого чего накодить.
DmitriyS
27-07-2009, 10:25
Почитай, может поможет.
http://www.autoitscript.com/forum/index.php?showtopic=10444
Да, все хорошо, но вот оно чет не находит нужное окно с компонентом...
Подскажите плз, может можно искать не по LocateURl ? и вообще где можно увидеть какие методы имеет выбраный обьект ?
Заранее благодарен.
DmitriyS
01-08-2009, 12:27
Подскажите плз, может можно искать не по LocateURl ? »
я использую $Window.LocationName для поиска.
хм...а что это значит ? и где можно увидеть все переменные используемые в: $Window.* ????
DmitriyS
07-08-2009, 08:26
где можно увидеть все переменные используемые в: $Window.* ? »
Ничего толкового сказать по этому поводу не смогу, я просто просмотрел файл IE.au3 и почерпнул из него много интересного ;). И еще использовал вот такой вот код:
$oShell = ObjCreate("shell.application")
$oShellWindows = $oShell.windows
For $Window In $oShellWindows
MsgBox(0,"1",$Window.Name)
Next
В месте 3-его параметра перечислил все комбинации, которые нашел в IE.au3 и плюс те, которые подходили по смыслу.
проблема не решена, еще :(
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.