日志含义ITravelLogStg::TravelTo failed with error 0x80004002
本文关键字:with error 0x80004002 failed TravelTo ITravelLogStg 日志 | 更新日期: 2023-09-27 18:12:50
我有以下两个方法来获取当前的旅行日志条目,并通过调用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
是一个。net WebBrowser
控件。当在TravelToTravelLogEntry
方法中调用ITravelLogStg::TravelTo
时,我得到一个0x80004002,根据此页,这是一个Interface not supported
错误。我做错了什么吗?
你正试图导航到旅行日志中的当前条目,这没有多大意义,因为你已经在那里了。我可以重现这个特定情况下的错误,发现它也不是很有帮助。
但是使用除0以外的任何参数作为GetRelativeEntry
的第一个参数,然后调用TravelTo
,如预期的那样工作。
(来源:MSDN)ITravelLogStg::GetRelativeEntry返回偏移量。正偏移量将在当前项之后返回一个项;一个负偏移量返回当前项之前的项。零返回当前条目。
尝试修改hr = tlstg.GetRelativeEntry(0, out ptle);
-第一个参数指定您想要导航的方向。使用0以外的其他值也可以,例如,您可以使用-1来向后移动一个条目。
我认为你的问题是你传递给TravelTo
方法的内容。您是否尝试过传递纯整数值以查看是否可以通过此操作?