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

问题描述 投票:0回答:2

希望您做的很好。

我的要求是从需要登录名和密码的站点下载一些文件。我可以一直浏览到文件生成页面。(使用.Net webBrowser控件)。我被卡在文件保存对话框中。我想跳过它,但无法这样做,因为没有直接链接到要下载的文件。调用一个函数并动态创建文件。

我正在考虑使用webBrowser以外的其他东西。如果webkit也显示相同的文件对话框,请指导我。 是否有分别使用webKit跳过该方法的更简单方法?

我正在使用.Net 4.5和Windows 7 32位。

我已经尝试过的内容:

SendKeys.WaitSend("{Enter}")

[结果:] Enter发送到Webbrowser控件,而不是文件下载对话框。我试图获取文件对话框的过程。但是进程“ 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

然后我接下来看到的是一个对话框,要求保存/打开/取消。

谢谢,问候

c# webkit webbrowser-control
2个回答
1
投票

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

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

%s代表“ Alt + S”。之后,将显示另存为对话框。同样也要处理。谢谢大家


1
投票

[请看一下:http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.filedownload(v=VS.100).aspx

如果有帮助,请告诉我,因为我真的可以自己使用它。不幸的是,我的工作机中没有VS可以对其进行测试...

© www.soinside.com 2019 - 2024. All rights reserved.