【发布时间】:2009-01-27 12:42:11
【问题描述】:
我需要阻止 .NET WebBrowser 控件显示任何“您要打开还是保存此文件?”和“另存为”对话框。相反,我想显示一个消息框,告诉用户出于安全原因已禁用文件下载。
我从WebBrowser 的FileDownload 事件开始,但它不允许取消。然后,我使用CodeProject: Extended .NET 2.0 WebBrowser Control 中的方法,使用接口DWebBrowserEvents2 在原始COM 调用的基础上实现我自己的事件。当我根据an MS knowledge base entry about a bug with the FileDownload signature 修复代码时,事件处理程序被调用并且我能够取消下载。
这不适用于所有下载,但是:指向包含.exe 的 URL 的下载 URL 会引发事件,并且可以在对话框出现之前取消 - 但对于其他人(如 .do),事件处理程序不是直到用户在对话框中单击Open、Save 或Cancel。
一个可能的解决方案可能是intercept WH_CALLWNDPROCRET messages and 'answer' the dialog before it is shown to the user,但这听起来很费力,我也更喜欢更清洁的解决方案......
有人知道如何可靠地阻止所有下载吗?
【问题讨论】:
-
让我明白这一点...您想允许您的用户访问互联网(这只不过是将文件下载到计算机中)并且您想阻止所有下载?
-
@Sergio:我想,Jens 想要阻止所有文件,这些文件不能直接在 webbrowser 中显示。
-
TcKs 是对的,我要屏蔽所有不能显示的东西。关键不是要阻止下载,而是要阻止显示任何“将文件另存为”对话框,使用户无法访问硬盘。我的应用程序安装为 windows shell(没有资源管理器,没有开始菜单)。