我有一个WebBrowser控件,它会自动将我登录到一个网站并尝试自动下载CSV数据。一切都运行正常,除了当它试图下载CSV数据时,它会弹出一个对话框,询问我是要保存文件还是打开它(就像在IE中一样)。我要做的是自动将CSV文件下载到我选择的文件中(或者更好,将CSV文件直接保存到字符串变量中)。我似乎无法弄清楚如何压制对话框并自动捕获下载。我搜索并找到了一些解决方案,然而,它们对我不起作用,因为:
1)我现在正在使用GUI。所有这些都是在一个类中完成的(因此,诸如SendKeys之类的方法不是一个可行的解决方案)
2)下载来自安全站点并需要身份验证。 WebBrowser控件为我处理所有这些,但如果我使用WebRequest和WebResponse尝试捕获下载,我将不再进行身份验证。
我正在使用C#。任何帮助将不胜感激。
答案 0 :(得分:4)
您可以连接自己的IDownloadManager实现,该实现可以安静地下载。对于Windows窗体,这意味着您需要覆盖WebBrowser.CreateWebBrowserSiteBase方法以提供扩展控件站点。查看Webbrowser Control Downloads了解详情。
答案 1 :(得分:2)
如果您熟悉C ++内部,盛江的解决方案是最好的。
否则看看iMacros for Internet Explorer(=免费软件浏览器宏录制器插件)是如何做到的。他们似乎使用Windows挂钩suppress the IE download dialog。
答案 2 :(得分:0)
您无法取消文件下载对话框,因为这将是一个主要的安全风险。如果您想自动执行此过程,我建议您调查其他路由以验证您的请求。