用WebBrowser控件浏览本地资源的诡异问题

本篇最初在2008年3月5日发表于我的MSN空间

用WebBrowser控件的Navigate方法可以方便的浏览本地的文件信息,就像Windows资源管理器中的一样。在以下这篇Thread中,客 户想直接用默认"Details"的方式浏览。经过测试,如果本地资源管理器的默认方式为"Details",则WebBrowser中也是 Details。但这并不是客户想要的,因为如果在不同的机器上运行这个程序,需要每次设置本地机器的默认浏览,这也是不现实的。

于是客户用SendKeys.Send方法来模拟在控件中用鼠标右键的菜单来选择"Details"方式,这不失为一个好办法。然而,第一次浏览正常之后,再次按下"Button"后,Details又不能正常浏览了。这个问题只能在资源管理器的默认属性不是Details的时候重现。具体的Thread为:

Web Browser Puzzle: Can anybody solve this

当时做了很多的搜索和测试,我个人认为这个问题很难用.NET提供的现成类库的方法中得到解决。看来需要调用系统相关的API了。最终,在一篇公司同事做过的Thread中找到了可以运行的完整代码:

WebBrowser to view local files

按照SendKeys.Send发送的模拟键盘指令,无论如何,也不可能重新回到原来的默认状态而改变“Details”方式。当时对代码做了很多的改动,排除了所有可能,但这个问题始终都可以重现。看来需要使用一些工具来跟踪观察一下这个方法的内部机制了。

Bruno Yu

posted on 2009-07-18 12:45  清晨  阅读(341)  评论(0编辑  收藏  举报

导航