Partha, a gentleman who posted on my blog, left some suggestions that ultimately made getting the page and browser hwnd much easier. I made some slight changes to his code to do what I wanted, and here's our result:
Public Function OpenBrowser(byval URL,ByRef strBrowser, ByRef strPage)
Dim oIE 'As InternetExplorer.Application
Dim WaitCount 'As Long
Set oIE = CreateObject("InternetExplorer.Application")
oIE.visible = 1
oIE.Navigate2 URL
WaitCount = 0
Do While oIE.ReadyState <> 4 And WaitCount < 5
Wait(1)
WaitCount=WaitCount+1
Loop
If oIE.ReadyState <> 4 Then
OpenBrowser = False
Exit Function
End If
strBrowser = "hwnd:=" & oIE.hwnd
strPage = "hwnd:= " & CStr(Browser("hwnd:=" & oIE.hwnd).Page("title:=" & oIE.Document.Title).GetROProperty("hwnd"))
OpenBrowser = True
End Function
Getting at the IE instance hwnd is simple, and I was all over that. However, I was looking for the page handle with EnumChildWindows API calls. It worked, and worked well. However, the solution suggested to get at it via:B
Browser("hwnd:=" & oIE.hwnd).Page("title:=" & oIE.Document.Title).GetROProperty("hwnd")
was much more eloquent. Good call, Partha.
Print | posted on Thursday, May 04, 2006 2:53 PM