最近在弄一些WScript脚本,有段功能需求就是弹出个打开文件夹的对话框,之前老是在”MSComDlg.CommonDialog“上纠结,后来才发现原来那个只能摆弄出文件选择对话框,后来在查阅了一些资料后才知道,要调用”Shell.Application“这个组件,哎,微软也应该把这些组件组合组合了,要不还真不容易找到。
贴出部分代码,后来根据需要我还改写了JavaScript版本,话说JS的对象引用很是方便,不用像VBS那样Set对象了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | Const SHELL_MY_COMPUTER = &H11 Const SHELL_WINDOW_HANDLE = 0 Const SHELL_OPTIONS = 0 Function GetOpenDirectory(title) Dim ShlApp,ShlFdr,ShlFdrItem Set ShlApp = WSH.CreateObject("Shell.Application") Set ShlFdr = ShlApp.Namespace(SHELL_MY_COMPUTER) Set ShlFdrItem = ShlFdr.Self GetOpenDirectory = ShlFdrItem.Path Set ShlFdrItem = Nothing Set ShlFdr = Nothing Set ShlFdr = ShlApp.BrowseForFolder _ (SHELL_WINDOW_HANDLE, _ title, _ SHELL_OPTIONS, _ GetOpenDirectory) If ShlFdr Is Nothing Then GetOpenDirectory = "" Else Set ShlFdrItem = ShlFdr.Self GetOpenDirectory = ShlFdrItem.Path Set ShlFdrItem = Nothing End If Set ShlApp = Nothing End Function |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | var SHELL_MY_COMPUTER = 0x11; var SHELL_WINDOW_HANDLE = 0; var SHELL_OPTIONS = 0; function openDir(title) { var shlfdr, shlapp = WSH.CreateObject("Shell.Application"); shlfdr = shlapp.BrowseForFolder( SHELL_WINDOW_HANDLE, title, SHELL_OPTIONS, shlapp.Namespace(SHELL_MY_COMPUTER).Self.Path); if (shlfdr == null) return ""; return shlfdr.Self.Path; } |
js版的有错误,我不懂js,但我猜有个逗号不太对路子,还有,存成.js文件后,运行没动静,拜托,要么你别贴出来,要么贴出来就弄牢靠点,我简直的受不了you
Windows XP测试通过,代码没有问题,这个是WScript技术的JScript版本,不是网页JavaScript脚本,这个只是个函数,需要调用才可以执行。
PS: 阁下也没有必要拜托我,我博客上所有的文章和技术代码都是免费分享给大家的,所有的代码仅供参考,文中未说明的我都亲自调试过,当然由于精力有限我也没有义务保证全部代码的可行性,另外我完全可以不分享这些代码,这样也就不会有这篇文章了。
不知道阁下有什么着急的事情,如果我的代码给你带来不便还请无视。
欢迎技术讨论,我会尽我可能的提供帮助,但是无意义的抱怨和代码索取也请绕过。
自己不会还要赖别人,大脸猫都没你脸大。