PDA

Показать полную графическую версию : IE embadded, как найти чужой?


Страниц : [1] 2

DjinnKo
18-07-2009, 22:03
Здравствуйте, подскажите плз.
Есть программа, она в своем окне юзает IE компоненты (ну вроде IE_embaded), подскажите плз как именно его найти и использовать как свое окно, как будто я сделал IE_Create ?
заранее благодарен.

proxy
19-07-2009, 00:19
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) что именно?

DjinnKo
19-07-2009, 00:28
о_О
Постараюсь объяснить понятно.
Есть программа, у нее как раз и используется:
>>>> 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
Вот, так надеюсь понятно.

Спасибо что отозвался :)

proxy
19-07-2009, 00:44
Вот, так надеюсь понятно. »
да )

Хендл можно получить так: ControlGetHandle(хэндл_окна, '', '[CLASS:Internet Explorer_Server; INSTANCE:1]')
а уж как себя поведут _IEFormElementSetValue и т.д. - стоит проверить....

Спасибо что отозвался
пожалуйста )

DjinnKo
19-07-2009, 00:54
проверю и сообщу что и как :)

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

DjinnKo
19-07-2009, 01:36
proxy, подскажи плз что я не так сделал... или может есть еще варианты ?

proxy
19-07-2009, 02:08
Сделал все правильно. А проблема в том, что для функций _IEBodyReadHTML и т.д., необходимо указывать не хендл элемента, а объект на элемент.
Как поучить указатель на сторонний объект, в данном случае на IE типа _IECreateEmbedded, не знаю.

DjinnKo
19-07-2009, 12:45
а есть возможность как-то посторонними путями вытащить исходный код страници и как использовать все элементы чтобы заполнять и выделять что нужно (чекбоксы, тектовые поля...) ?

DjinnKo
19-07-2009, 16:29
Люди, никто не знает как решить эту проблему ?

proxy
19-07-2009, 18:43
исходный код страници »
это все в том же стороннем объекте IE?....

а использовать свой IE или _INetGetSource невозможно?

DjinnKo
19-07-2009, 20:10
нет, нужно конкретно переловить то окно.
ну или полностью имитировать его работу... как переловить пути куда он и что шлет ? ну и соответственно ка кимитировать POST запрос в AutoIt ?

proxy
19-07-2009, 21:10
ну и соответственно ка кимитировать 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)

DjinnKo
19-07-2009, 21:15
а как можно увидеть куда он обращается чтобы это все имитировать ?
и может есть всеже возможность как-то контролировать IE компонент нужной программы... ?

P.S. снифер использовать не рентабельно, много муссора словит... что есть нормальное для таких целей ?

proxy
19-07-2009, 21:22
P.S. снифер использовать не рентабельно, много муссора словит... что есть нормальное для таких целей ? »
имхо, уж в этом направление заменить запросы сторонней программы - мега гемор )

а как можно увидеть куда он обращается чтобы это все имитировать ?
и может есть всеже возможность как-то контролировать IE компонент нужной программы... ? »
да думаю можно и тут, тока не в силах я тебе помочь ))) Главное узнать технологию, как получить указатель на объект, созданный в стороннем приложении. А уж на AutoIt можно мнооооого чего накодить.

DmitriyS
27-07-2009, 10:25
Почитай, может поможет.
http://www.autoitscript.com/forum/index.php?showtopic=10444

DjinnKo
31-07-2009, 16:46
Да, все хорошо, но вот оно чет не находит нужное окно с компонентом...
Подскажите плз, может можно искать не по LocateURl ? и вообще где можно увидеть какие методы имеет выбраный обьект ?

Заранее благодарен.

DmitriyS
01-08-2009, 12:27
Подскажите плз, может можно искать не по LocateURl ? »

я использую $Window.LocationName для поиска.

DjinnKo
01-08-2009, 13:08
хм...а что это значит ? и где можно увидеть все переменные используемые в: $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 и плюс те, которые подходили по смыслу.

DjinnKo
09-08-2009, 13:21
проблема не решена, еще :(




© OSzone.net 2001-2012