I have these two methods to get the current travel log entry and go to the log entry obtained when the GetTravelLogEntry method was GetTravelLogEntry :
public static ITravelLogEntry GetTravelLogEntry(WebBrowser webBrowser) { int HRESULT_OK = 0; SHDocVw.IWebBrowser2 axWebBrowser = (SHDocVw.IWebBrowser2)webBrowser.ActiveXInstance; IServiceProvider psp = axWebBrowser as IServiceProvider; if (psp == null) throw new Exception("Could not get IServiceProvider."); IntPtr oret = IntPtr.Zero; int hr = psp.QueryService(ref SID_STravelLogCursor, ref IID_ITravelLogStg, out oret); if ((oret == IntPtr.Zero) || (hr != HRESULT_OK)) throw new Exception("Failed to query service."); ITravelLogStg tlstg = Marshal.GetObjectForIUnknown(oret) as ITravelLogStg; if (null == tlstg) throw new Exception("Failed to get ITravelLogStg"); ITravelLogEntry ptle = null; hr = tlstg.GetRelativeEntry(0, out ptle); if (hr != HRESULT_OK) MessageBox.Show("Failed to get travel log entry with error " + hr.ToString("X")); Marshal.ReleaseComObject(tlstg); return ptle; } public static void TravelToTravelLogEntry(WebBrowser webBrowser, ITravelLogEntry travelLogEntry) { int HRESULT_OK = 0; SHDocVw.IWebBrowser2 axWebBrowser = (SHDocVw.IWebBrowser2)webBrowser.ActiveXInstance; IServiceProvider psp = axWebBrowser as IServiceProvider; if (psp == null) throw new Exception("Could not get IServiceProvider."); IntPtr oret = IntPtr.Zero; int hr = psp.QueryService(ref SID_STravelLogCursor, ref IID_ITravelLogStg, out oret); if ((oret == IntPtr.Zero) || (hr != HRESULT_OK)) throw new Exception("Failed to query service."); ITravelLogStg tlstg = Marshal.GetObjectForIUnknown(oret) as ITravelLogStg; if (null == tlstg) throw new Exception("Failed to get ITravelLogStg"); hr = tlstg.TravelTo(travelLogEntry); if (hr != HRESULT_OK) MessageBox.Show("Failed to travel to log entry with error " + hr.ToString("X")); Marshal.ReleaseComObject(tlstg); }
WebBrowser here is the .NET WebBrowser . When calling ITravelLogStg::TravelTo inside the TravelToTravelLogEntry method TravelToTravelLogEntry I get 0x80004002, which according to this page is an Interface not supported error. Am I doing something wrong?
PD: I took most of this code from here .
source share