【问题标题】:VBScript file open dialog that works in XP and Vista?在 XP 和 Vista 中工作的 VBScript 文件打开对话框?
【发布时间】:2011-02-08 11:15:10
【问题描述】:

在 XP 中,您可以使用带有 UserAccounts.CommonDialog 对象的 VBScript 来打开文件打开对话框 (as described here),但显然是 this does not work under Vista

是否有适用于两者的文件打开对话框的 VBScript 方法?

或者甚至可以很好地适用于 Vista?

免责声明:我是一名合格的程序员,诚实,并且通常不使用 VBScript - 我是“为朋友”问这个问题的。

【问题讨论】:

  • +1 表示搞笑的免责声明。你的“朋友”听起来很像我的“朋友”。也许应该有一个支持小组?
  • 您找到解决方案了吗?我有同样的问题。
  • @Dave Turvey:不,我放弃了。等等……我的意思是我的朋友放弃了。

标签: windows-vista vbscript windows-xp fileopendialog


【解决方案1】:

您可以创建一个简单的 dot net 组件,它公开一个 COM 接口,这样您就可以在 VBScript(或任何 >COM/ActiveX 技术)。

  • (1)创建一个点网库类型的项目,公开你想要COM互操作的类(添加ComVisibleClassInterface属性)。 ClassInterface 属性必须设置为 AutoDual,以便您可以通过后期绑定创建实例。
  • (2) 在项目属性对话框的构建选项卡中标记注册 COM 互操作性 复选框。
  • (3) 构建项目,以便正确注册组件(您可以选择为组件创建安装项目,以便轻松部署)。

...

namespace WinUtility
{
    [ComVisible(true), Guid("32284FD3-417E-45fc-A4A0-9344C489053B"),
     ClassInterface(ClassInterfaceType.AutoDual)]
    public class WinDialog
    {
        public string ShowOpenFileDialog()
        {
            string result = string.Empty;
            OpenFileDialog d = new OpenFileDialog();
            if (d.ShowDialog() == DialogResult.OK) { result = d.FileName; }
            return result;
        }
    }
}

一旦您的组件被注册,您就可以从 VBScript 实例化它:

dim wnd_helper, file_name
Set wnd_helper = CreateObject("WinUtility.WinDialog")
file_name = wnd_helper.ShowOpenFileDialog()
if trim(file_name) <> "" then
    msgbox "file: " + file_name
else
    msgbox "No file selected."
end if

【讨论】:

    猜你喜欢
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    相关资源
    最近更新 更多