Пример #1
0
        public static HashSet <ITravelLogEntry> GetTravelLogEntries(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");
            }
            //Enum the travel log entries
            IEnumTravelLogEntry penumtle = null;

            tlstg.EnumEntries((int)TLMENUF.TLEF_ABSOLUTE, out penumtle);
            hr = 0;
            ITravelLogEntry ptle            = null;
            int             fetched         = 0;
            const int       MAX_FETCH_COUNT = 1;

            hr = penumtle.Next(MAX_FETCH_COUNT, out ptle, out fetched);
            Marshal.ThrowExceptionForHR(hr);
            HashSet <ITravelLogEntry> results = new HashSet <ITravelLogEntry>();

            for (int i = 0; 0 == hr; i++)
            {
                if (ptle != null)
                {
                    results.Add(ptle);
                }
                hr = penumtle.Next(MAX_FETCH_COUNT, out ptle, out fetched);
                Marshal.ThrowExceptionForHR(hr);
            }
            Marshal.ReleaseComObject(penumtle);
            Marshal.ReleaseComObject(tlstg);
            return(results);
        }
Пример #2
0
        //public static void TravelTo(WebBrowser webBrowser, int
        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)
            {
                throw new Exception("Failed to get travel log entry with error " + hr.ToString("X"));
            }

            Marshal.ReleaseComObject(tlstg);
            return(ptle);
        }