WScript脚本打开文件夹选择对话框

!本文可能 超过1年没有更新,今后内容也许不会被维护或者支持,部分内容可能具有时效性,涉及技术细节或者软件使用方面,本人不保证相应的兼容和可操作性。

最近在弄一些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;
}
若无特别说明,本网站文章均为原创,原则上这些文章不允许转载,但是如果阁下是出于研究学习目的可以转载到阁下的个人博客或者主页,转载遵循创作共同性“署名-非商业性使用-相同方式共享”原则,请转载时注明作者出处谢绝商业性、非署名、采集站、垃圾站或者纯粹为了流量的转载。谢谢合作!

  1. js版的有错误,我不懂js,但我猜有个逗号不太对路子,还有,存成.js文件后,运行没动静,拜托,要么你别贴出来,要么贴出来就弄牢靠点,我简直的受不了you

    • Windows XP测试通过,代码没有问题,这个是WScript技术的JScript版本,不是网页JavaScript脚本,这个只是个函数,需要调用才可以执行。

      PS: 阁下也没有必要拜托我,我博客上所有的文章和技术代码都是免费分享给大家的,所有的代码仅供参考,文中未说明的我都亲自调试过,当然由于精力有限我也没有义务保证全部代码的可行性,另外我完全可以不分享这些代码,这样也就不会有这篇文章了。
      不知道阁下有什么着急的事情,如果我的代码给你带来不便还请无视。

      欢迎技术讨论,我会尽我可能的提供帮助,但是无意义的抱怨和代码索取也请绕过。

请稍后...

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*