如何在打开之前拦截WebBrowser控件的“选择要上载的文件”窗口?

我的应用程序必须使用webBrowser控件自动填写表单并上传文件。 当我调用会员(“点击”)时,会弹出通常的“选择要上传的文件”表单,并且会出现在我可能同时使用的任何其他应用程序之前。 有没有办法拦截这个窗口,以便我可以在后台leep我的表单填写和文件上传?

答案是你可能会,但这可能是一个荒谬复杂的过程。 您可以挂钩到Windows CALLWNDPROCRET通知链,它可以让您在Webbrowser控件处理之前获取事件(如对话框创建)。 我以前用过这个来做抑制’不受信任的证书’警告对话框的事情,但是除非你绝对别无选择,否则我不建议你去这条路线。

出于安全原因,IE不允许以编程方式设置要上载的文件。 (事实上​​,你甚至不能使用SendKeys,因为微软也关闭了这个漏洞。)

但是,您可以通过轻松地将文件添加到HTTP标头来完成您要执行的操作。 有一个很棒的教程可以帮助你这样做:

http://www.codeproject.com/KB/aspnet/set-webbrowser-file-input.aspx