在.NET中使用Internet Explorer Control的一个Bug

这两天在做一个项目,主要是在Windows Form中嵌一个IE,访问一个网站,基于某些理由,不允许用户下载、上传及打印。

关于禁止下载,我查看了一个Inteernet Explorer的SDK,发现了FileDownload事件,根据SDK中的描述,该事件的作用是:“Fires to indicate that a file download is about to occur. If a file download dialog is to be displayed, this event is fired prior to the display of the dialog.”,正对我的需求。

可是无论我如何实验,那个“打开、保存”的对话框仍然持续出现,所以我感觉有问题,于是我到KB上查了一下,发现了这原来是Internet Explorer Control在通过.NET导入的时候出现的一个Bug。根据KB中的描述,这个Bug只发生在VS.NET 2002当中。不过我发现在VS.NET 2003当中仍然继续出现,所以我想,开发组的人员可能并没有弥补该Bug,十分遗憾。

对此Bug感兴趣的朋友可以参考KB中的文章:325204。非MVP请访问http://support.microsoft.com, MVP请访问http://mvp.support.microsoft.com。我想大部分人员知道如何通过KB索引号来查找KB文章了,我在这儿就不再叙述了。这篇KB还详细介绍了如何解决此问题,不过并不对我胃口,因为按照他介绍的Step By Step,我是得到FileDownload事件,但其它事件就丢失了。

不知道哪位朋友知道在使用VS.NET导入COM控件的时候,如何得到它产生的中间文件,即那个C#的源代码,我想在那个基础上修改,然后再编译。如果请知道,请在此加评论。

另外,关于如何屏蔽上传功能,我现在还没有很好的想法,我现在在BeforeNavigate2事件中,通过分析e.PostData是否含有“filename=”字段来禁止上传,但仍然会弹出那个对话框,使用户有权访问该机器上的文件,如何通过某种方案来使该对话框不出现?请大家帮我出出主意,即使非常变态的也可以,比如FindWindow,然后KillWindow,或者通过修改注册表中的某个健值而禁止打印。