0

我正在尝试将 Document.cookie 的值存储到我的 c# 代码中的字符串变量中。这里的想法是浏览 Internet Explorer 浏览器中的每个选项卡,然后从选项卡中获取 cookie 信息。所以我有以下内容,

ShellWindows iExplorerInstances = new ShellWindows();
                            bool found = false;
                            foreach (InternetExplorer iExplorer in       iExplorerInstances)
                        {
                            if (iExplorer.Name == "Internet Explorer")
                            {
                                string cookie = iExplorer.Document.cookie;

现在这适用于代码的初始运行,但是当它再次在同一个会话中运行时,它会失败并在上面的最后一行代码中遇到 NotSupportDeskException,这是声明和初始化字符串 cookie 的地方(第 134 行)。有没有解决的办法?

堆栈跟踪如下,在 System.Dynamic.ComRuntimeHelpers.CheckThrowException(Int32 hresult, ExcepInfo& excepInfo, UInt32 argErr, String message) 在 CallSite.Target(Closure , CallSite , ComObject ) 在 CallSite.Target(Closure , CallSite , Object )在 Somefile.cs:line 134 中的 hhsoutlookadin.ThisAddIn.d__3.MoveNext() 处。消息是“HRESULT 异常:0x800A01B6”。

4

1 回答 1

1

我认为这与将 Document.cookie 对象转换为字符串有关,这似乎在运行一次代码后导致了问题。因此,我现在将 Document 对象解析为 mshtml.IHTML2Document2 对象。然后我通过将它存储在一个字符串中来引用它的 cookie 对象,这可以正常工作并且不会导致任何问题。

ShellWindows iExplorerInstances = new ShellWindows();
                        bool found = false;
                        foreach (InternetExplorer iExplorer in iExplorerInstances)
                        {
                            if (iExplorer.Name == "Internet Explorer")
                            {
                                string[] cookieCrumbs = { };
                                try
                                {
                                    mshtml.IHTMLDocument2 htmlDoc = iExplorer.Document as mshtml.IHTMLDocument2;
                                    string cookie = htmlDoc.cookie;
于 2015-01-21T10:59:18.197 回答