Webkit是否在下载时显示文件保存对话框?如何跳过WebBrowser控件?

时间:2015-05-19 10:13:11

标签: c# webkit webbrowser-control

希望你做得好。

我的要求是从需要登录密码的网站下载一些文件。我能够一直导航到文件生成页面。(使用.Net webBrowser控件)。我被困在文件保存对话框中。我想跳过它但无法这样做,因为没有直接链接到要下载的文件。调用一个函数,即时创建文件。

我正在考虑使用 webBrowser 之外的其他内容。请指导我,如果webkit也显示相同的文件对话框? 使用webKit分别有更简单的方法可以跳过它吗?

我使用的是.Net 4.5和Windows 7 32位。

我已尝试过的内容:

SendKeys.WaitSend("{Enter}")

结果: Enter被发送到webbrowser控件,而不是文件下载对话框。我试图获取文件对话框的过程。但是Process" WindowsFormsApplication.vshost" **没有任何子进程。

private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
WebClient client = new WebClient();
client.DownloadDataCompleted += new  DownloadDataCompletedEventHandler(client_DownloadDataCompleted);
client.DownloadDataAsync(e.Url);

结果: e.URL没有直接联系。单击要下载的文件时,将在后端调用一个函数。我在Firefox中看到了该函数中的代码,这就是这一行:

document.location.href = 'something.do?something='+variable1+'&something='+variable2+ '&something=' + variable3;

调查上面,我可以通过在浏览器中粘贴以下行来直接调用该函数。(如果我的会话未到期):

https://something.com/downloadsomething.do?somevariable=45875&somenumber=54875125&somevariable=1Hg5422

我接下来看到的是一个询问保存/打开/取消的对话框。

谢谢你, 问候

1 个答案:

答案 0 :(得分:1)

我使用pinvoke完成了它。将保存对话框窗口置于前面,然后向其发送密钥。

IntPtr fileDownloadDialogPointer = FindWindow(null, "File Download");
SetForegroundWindow(fileDownloadDialogPointer);
SendKeys.SendWait("%s");

%s代表“Alt + S”。在此之后,将出现另存为对话框。以同样的方式处理它。 谢谢大家