Naeemg
asked on
Internet Explorer Object in VB
hello, I'm using Internet Explorer object, actually i've added my button in the Internet Explorer Toolbar. By pressing my button i want to get the contents(html contents) which are displaying in browser, or get the local path of that html document from Temporary Internet Files folder.
thanks the code is as follows.
Option Explicit
' ····----==== Interfaces ====----····
Implements IObjectWithSite
Implements olelib2.IOleCommandTarget
' ····----==== Private Fields ====----····
Private m_oSite As IUnknown
Private m_oIE As InternetExplorer
' ····----==== APIs ====----····
Private Type INTERNET_CACHE_ENTRY_INFO
dwStructSize As Long
lpszSourceUrlName As Long
lpszLocalFileName As Long
CacheEntryType As Long
dwUseCount As Long
dwHitRate As Long
dwSizeLow As Long
dwSizeHigh As Long
LastModifiedTime As Currency
ExpireTime As Currency
LastAccessTime As Currency
LastSyncTime As Currency
lpHeaderInfo As Long
dwHeaderInfoSize As Long
lpszFileExtension As Long
dwExemptDelta As Long
'
Buffer(0 To 1023) As Byte
End Type
Const NORMAL_CACHE_ENTRY As Long = &H1
Private Declare Function FindFirstUrlCacheEntry Lib "wininet" _
Alias "FindFirstUrlCacheEntryA" ( _
ByVal lpszUrlSearchPattern As String, _
lpFirstCacheEntryInfo As INTERNET_CACHE_ENTRY_INFO, _
lpdwFirstCacheEntryInfoBuf ferSize As Long) As Long
Private Declare Function FindNextUrlCacheEntry Lib "wininet" _
Alias "FindNextUrlCacheEntryA" ( _
ByVal hEnumHandle As Long, _
lpNextCacheEntryInfo As Any, _
lpdwNextCacheEntryInfoBuff erSize As Long) As Long
Private Declare Function FindCloseUrlCache Lib "wininet" ( _
ByVal hEnumHandle As Long) As Long
Private Declare Function DeleteUrlCacheEntry Lib "wininet" _
Alias "DeleteUrlCacheEntryA" ( _
ByVal lpszUrlName As String) As Long
Private Declare Function lstrcpyA Lib "kernel32" ( _
ByVal RetVal As String, _
ByVal Ptr As Long) As Long
Private Declare Function lstrlenA Lib "kernel32" ( _
ByVal Ptr As Any) As Long
' ····----==== IObjectWithSite Methods ====----····
Private Sub IObjectWithSite_GetSite(ri id As olelib.UUID, ppvSite As stdole.IUnknown)
Dim oUnk As olelib.IUnknown
' Get the IUnknown interface
Set oUnk = m_oSite
' Query for the interface
oUnk.QueryInterface riid, ppvSite
End Sub
Private Sub IObjectWithSite_SetSite(By Val pUnkSite As stdole.IUnknown)
' Store the site
Set m_oSite = pUnkSite
If pUnkSite Is Nothing Then
Set m_oIE = Nothing
Else
' Get the InternetExplorer object
Set m_oIE = GetIE(pUnkSite)
End If
End Sub
' ····----==== IOleCommandTarget methods ====----····
Private Sub IOleCommandTarget_Exec(pgu idCmdGroup As olelib.UUID, ByVal nCmdID As Long, ByVal nCmdexecopt As olelib.OLECMDEXECOPT, pvaIn As Variant, pvaOut As Variant)
' Clean the temporary folder
'CleanTemporaryFolder
m_oIE.StatusText = "My Button is pressed."
MsgBox "m_oIE.Document" & m_oIE.Document
MsgBox "m_oIE.LocationName" & m_oIE.LocationName
MsgBox "m_oIE.LocationURL" & m_oIE.LocationURL
MsgBox "m_oIE.Name" & m_oIE.Name
MsgBox "m_oIE.Path" & m_oIE.Path
MsgBox "m_oIE.hWnd" & m_oIE.hWnd
MsgBox "m_oIE.Parent" & m_oIE.Parent
MsgBox "m_oIE.Application" & m_oIE.Application
MsgBox "m_oIE.AddressBar" & m_oIE.AddressBar
End Sub
Private Sub IOleCommandTarget_QuerySta tus(pguidC mdGroup As olelib.UUID, ByVal cCmds As Long, prgCmds As olelib.OLECMD, pCmdText As olelib.OLECMDTEXT)
' Always enabled
prgCmds.cmdf = OLECMDF_ENABLED
End Sub
' ····----==== Other methods ====----····
Private Function GetIE( _
ByVal ServiceProvider As olelib.IServiceProvider) As IWebBrowserApp
Dim IID_IWebBrowserApp As olelib.UUID
CLSIDFromString IIDSTR_IWebBrowserApp, IID_IWebBrowserApp
ServiceProvider.QueryServi ce IID_IWebBrowserApp, _
IID_IWebBrowserApp, _
GetIE
End Function
Private Sub CleanTemporaryFolder()
Dim lHandle As Long
Dim tEI As INTERNET_CACHE_ENTRY_INFO
Dim sURL As String
tEI.dwStructSize = Len(tEI)
lHandle = FindFirstUrlCacheEntry(vbN ullString, tEI, Len(tEI))
If lHandle <> 0 Then
Do
If (tEI.CacheEntryType And NORMAL_CACHE_ENTRY) <> 0 Then
sURL = StringFromPointer(tEI.lpsz SourceUrlN ame)
m_oIE.StatusText = "Deleting " & sURL
'MsgBox ""
'DeleteUrlCacheEntry sURL
DoEvents
End If
Loop While FindNextUrlCacheEntry(lHan dle, tEI, Len(tEI))
FindCloseUrlCache lHandle
End If
'MsgBox "StringFromPointer(tEI.Buf fer)" & StringFromPointer(tEI.Buff er)
'MsgBox "StringFromPointer(tEI.Cac heEntryTyp e)" & StringFromPointer(tEI.Cach eEntryType )
'MsgBox "StringFromPointer(tEI.dwE xemptDelta )" & StringFromPointer(tEI.dwEx emptDelta)
'MsgBox "StringFromPointer(tEI.dwH eaderInfoS ize)" & StringFromPointer(tEI.dwHe aderInfoSi ze)
'MsgBox "StringFromPointer(tEI.dwH itRate)" & StringFromPointer(tEI.dwHi tRate)
'MsgBox "StringFromPointer(tEI.dwS izeHigh)" & StringFromPointer(tEI.dwSi zeHigh)
'MsgBox "StringFromPointer(tEI.dwS izeLow)" & StringFromPointer(tEI.dwSi zeLow)
'MsgBox "StringFromPointer(tEI.dwS tructSize) " & StringFromPointer(tEI.dwSt ructSize)
'MsgBox "StringFromPointer(tEI.Exp ireTime)" & StringFromPointer(tEI.Expi reTime)
'MsgBox "StringFromPointer(tEI.Las tAccessTim e)" & StringFromPointer(tEI.Last AccessTime )
'MsgBox "StringFromPointer(tEI.Las tModifiedT ime)" & StringFromPointer(tEI.Last ModifiedTi me)
'MsgBox "StringFromPointer(tEI.Las tSyncTime) " & StringFromPointer(tEI.Last SyncTime)
'MsgBox "StringFromPointer(tEI.lpH eaderInfo) " & StringFromPointer(tEI.lpHe aderInfo)
'MsgBox "StringFromPointer(tEI.lps zFileExten sion)" & StringFromPointer(tEI.lpsz FileExtens ion)
'MsgBox "StringFromPointer(tEI.lps zSourceUrl Name)" & StringFromPointer(tEI.lpsz SourceUrlN ame)
'MsgBox "StringFromPointer(tEI.lps zLocalFile Name)" & StringFromPointer(tEI.lpsz LocalFileN ame)
m_oIE.StatusText = "Done"
End Sub
Private Function StringFromPointer(ByVal Ptr As Long) As String
StringFromPointer = Space$(lstrlenA(Ptr))
lstrcpyA StringFromPointer, Ptr
End Function
thanks the code is as follows.
Option Explicit
' ····----==== Interfaces ====----····
Implements IObjectWithSite
Implements olelib2.IOleCommandTarget
' ····----==== Private Fields ====----····
Private m_oSite As IUnknown
Private m_oIE As InternetExplorer
' ····----==== APIs ====----····
Private Type INTERNET_CACHE_ENTRY_INFO
dwStructSize As Long
lpszSourceUrlName As Long
lpszLocalFileName As Long
CacheEntryType As Long
dwUseCount As Long
dwHitRate As Long
dwSizeLow As Long
dwSizeHigh As Long
LastModifiedTime As Currency
ExpireTime As Currency
LastAccessTime As Currency
LastSyncTime As Currency
lpHeaderInfo As Long
dwHeaderInfoSize As Long
lpszFileExtension As Long
dwExemptDelta As Long
'
Buffer(0 To 1023) As Byte
End Type
Const NORMAL_CACHE_ENTRY As Long = &H1
Private Declare Function FindFirstUrlCacheEntry Lib "wininet" _
Alias "FindFirstUrlCacheEntryA" ( _
ByVal lpszUrlSearchPattern As String, _
lpFirstCacheEntryInfo As INTERNET_CACHE_ENTRY_INFO,
lpdwFirstCacheEntryInfoBuf
Private Declare Function FindNextUrlCacheEntry Lib "wininet" _
Alias "FindNextUrlCacheEntryA" ( _
ByVal hEnumHandle As Long, _
lpNextCacheEntryInfo As Any, _
lpdwNextCacheEntryInfoBuff
Private Declare Function FindCloseUrlCache Lib "wininet" ( _
ByVal hEnumHandle As Long) As Long
Private Declare Function DeleteUrlCacheEntry Lib "wininet" _
Alias "DeleteUrlCacheEntryA" ( _
ByVal lpszUrlName As String) As Long
Private Declare Function lstrcpyA Lib "kernel32" ( _
ByVal RetVal As String, _
ByVal Ptr As Long) As Long
Private Declare Function lstrlenA Lib "kernel32" ( _
ByVal Ptr As Any) As Long
' ····----==== IObjectWithSite Methods ====----····
Private Sub IObjectWithSite_GetSite(ri
Dim oUnk As olelib.IUnknown
' Get the IUnknown interface
Set oUnk = m_oSite
' Query for the interface
oUnk.QueryInterface riid, ppvSite
End Sub
Private Sub IObjectWithSite_SetSite(By
' Store the site
Set m_oSite = pUnkSite
If pUnkSite Is Nothing Then
Set m_oIE = Nothing
Else
' Get the InternetExplorer object
Set m_oIE = GetIE(pUnkSite)
End If
End Sub
' ····----==== IOleCommandTarget methods ====----····
Private Sub IOleCommandTarget_Exec(pgu
' Clean the temporary folder
'CleanTemporaryFolder
m_oIE.StatusText = "My Button is pressed."
MsgBox "m_oIE.Document" & m_oIE.Document
MsgBox "m_oIE.LocationName" & m_oIE.LocationName
MsgBox "m_oIE.LocationURL" & m_oIE.LocationURL
MsgBox "m_oIE.Name" & m_oIE.Name
MsgBox "m_oIE.Path" & m_oIE.Path
MsgBox "m_oIE.hWnd" & m_oIE.hWnd
MsgBox "m_oIE.Parent" & m_oIE.Parent
MsgBox "m_oIE.Application" & m_oIE.Application
MsgBox "m_oIE.AddressBar" & m_oIE.AddressBar
End Sub
Private Sub IOleCommandTarget_QuerySta
' Always enabled
prgCmds.cmdf = OLECMDF_ENABLED
End Sub
' ····----==== Other methods ====----····
Private Function GetIE( _
ByVal ServiceProvider As olelib.IServiceProvider) As IWebBrowserApp
Dim IID_IWebBrowserApp As olelib.UUID
CLSIDFromString IIDSTR_IWebBrowserApp, IID_IWebBrowserApp
ServiceProvider.QueryServi
IID_IWebBrowserApp, _
GetIE
End Function
Private Sub CleanTemporaryFolder()
Dim lHandle As Long
Dim tEI As INTERNET_CACHE_ENTRY_INFO
Dim sURL As String
tEI.dwStructSize = Len(tEI)
lHandle = FindFirstUrlCacheEntry(vbN
If lHandle <> 0 Then
Do
If (tEI.CacheEntryType And NORMAL_CACHE_ENTRY) <> 0 Then
sURL = StringFromPointer(tEI.lpsz
m_oIE.StatusText = "Deleting " & sURL
'MsgBox ""
'DeleteUrlCacheEntry sURL
DoEvents
End If
Loop While FindNextUrlCacheEntry(lHan
FindCloseUrlCache lHandle
End If
'MsgBox "StringFromPointer(tEI.Buf
'MsgBox "StringFromPointer(tEI.Cac
'MsgBox "StringFromPointer(tEI.dwE
'MsgBox "StringFromPointer(tEI.dwH
'MsgBox "StringFromPointer(tEI.dwH
'MsgBox "StringFromPointer(tEI.dwS
'MsgBox "StringFromPointer(tEI.dwS
'MsgBox "StringFromPointer(tEI.dwS
'MsgBox "StringFromPointer(tEI.Exp
'MsgBox "StringFromPointer(tEI.Las
'MsgBox "StringFromPointer(tEI.Las
'MsgBox "StringFromPointer(tEI.Las
'MsgBox "StringFromPointer(tEI.lpH
'MsgBox "StringFromPointer(tEI.lps
'MsgBox "StringFromPointer(tEI.lps
'MsgBox "StringFromPointer(tEI.lps
m_oIE.StatusText = "Done"
End Sub
Private Function StringFromPointer(ByVal Ptr As Long) As String
StringFromPointer = Space$(lstrlenA(Ptr))
lstrcpyA StringFromPointer, Ptr
End Function
ASKER
thanks for ur cooperation,. but i've done registry entries. and also got object of IE.
I want to get the html contents of that IE broswer.
thanks
I want to get the html contents of that IE broswer.
thanks
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
hello, i also want to save those html contents to file on harddisk.
can anyone help?
can anyone help?
This can be done easily by editing Registry, see:
http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/ext/extensions.asp
Many more useful resources at: http:Q_20721021.html
Will this helps?