- Details
- Written by: Stanko Milosev
- Category: Web
- Hits: 11778
If you need to automate IE8, popup windows, then read this article
Window structure go like this:
Frame Tab,
TabWindowClass,
Shell DocObject View,
Internet Explorer_Server.
So, code would go something like this:
var Wnd: HWND; WndChild: HWND; IE: iwebbrowser2; begin webBrowser.Quit; try Wnd := FindWindow('IEFrame', nil); if Wnd = 0 then //No running instance of Internet Explorer so stop! begin showmessage('No Running instance of Internet Explorer'); exit; end; WndChild := FindWindowEX(Wnd , 0, 'Frame Tab', nil); Wnd := FindWindowEX(WndChild, 0, 'TabWindowClass', nil); Wnd := FindWindowEX(Wnd, 0, 'Shell DocObject View', nil); Wnd := FindWindowEX(Wnd, 0, 'Internet Explorer_Server', nil); if Wnd <> 0 then begin GetIEFromHWnd(Wnd, IE); //Get Iwebbrowser2 from Handle Result := IE; end; except on e: Exception do ShowMessage('GetIE' + e.Message); end; end function .GetIEFromHWND(WHandle: HWND; var IE: IWebbrowser2): HRESULT; var hInst: HWND; lRes: Cardinal; MSG: Integer; pDoc: IHTMLDocument2; ObjectFromLresult: TObjectFromLresult; begin hInst := LoadLibrary('Oleacc.dll'); @ObjectFromLresult := GetProcAddress(hInst, 'ObjectFromLresult'); if @ObjectFromLresult <> nil then begin try MSG := RegisterWindowMessage('WM_HTML_GETOBJECT'); SendMessageTimeOut(WHandle, MSG, 0, 0, SMTO_ABORTIFHUNG, 1000, lRes); Result := ObjectFromLresult(lRes, IHTMLDocument2, 0, pDoc); if Result = S_OK then (pDoc.parentWindow as IServiceprovider).QueryService(IWebbrowserApp, IWebbrowser2, IE); finally FreeLibrary(hInst); end; end; end;
I was using myCatch, to get windows structure.
This code which I left here is just to give you idea, I hope that soon I will upload example of automation IE6, IE7 and IE8...
- Details
- Written by: Stanko Milosev
- Category: Web
- Hits: 5654
One way to show user location on the google maps, in his/her default browser:
http://maps.google.com/maps?q=pot%20na%20hrese%2C+Ljubljana
Where, of course, you should put instead of:
pot%20na%20hrese%2C+Ljubljana
adress you would like to search...
- Details
- Written by: Stanko Milosev
- Category: Web
- Hits: 6889
I was using TEmbeddedWB:
EmbeddedWb1.ElementByID['username'].SetAttribute('value', 'stanko', 0)
This is if you ger error:
Exception class EOleError with message 'Method 'Name' not supported by automation object
In TEmbeddedWB.