使用WebBrowser控件创建WPF应用程序。它使用Document.ExecCommand()将显示页面的HTML复制到剪贴板,然后将其存储在变量中:
XAML
<WebBrowser x:Name="browser"... />
代码隐藏
browser.Source = new Uri(selectedUrl);
dynamic document = browser.Document;
document.ExecCommand("SelectAll", true, null);
document.ExecCommand("Copy", true, null);
document.ExecCommand("Unselect", true, null);
IDataObject iDataObj = Clipboard.GetDataObject();
var content = iDataObj.GetData(DataFormats.Html).ToString();
第一次这一切都很好。但是在导航到同一会话中的第二个URL之后,在Document.ExecCommand(&#34; SelectAll&#34;,true,null)上,它会抛出异常
{"Invalid argument."}
Data: {System.Collections.ListDictionaryInternal}
HResult: -2146827850 (0x800A01B6)
HelpLink: null
InnerException: null
Message: "Invalid argument."
Source: "System.Dynamic"
StackTrace:
at System.Dynamic.ComRuntimeHelpers.CheckThrowException(Int32 hresult, ExcepInfo& excepInfo, UInt32 argErr, String message)
at CallSite.Target(Closure , CallSite , ComObject , String , Boolean , Object )
at CallSite.Target(Closure , CallSite , Object , String , Boolean , Object )
...
TargetSite: {Void CheckThrowException(Int32, System.Dynamic.ExcepInfo ByRef, UInt32, System.String)}
但是,这并不是一直发生的。有一次我可以测试,它可以在我之后提出的第一页和每一页上工作。下次测试时,它会抛出异常。