4

In XP, you can use VBScript with the UserAccounts.CommonDialog object to bring up a File Open dialog (as described here), but apparently this does not work under Vista.

Is there a VBScript method for File-Open dialogs that will work for both?

Or even one that will work nicely for Vista?

Disclaimer: I'm a proper programmer, honest, and don't usually work with VBScript - I am asking this question 'for a friend'.

4

1 に答える 1

1

COMインターフェイスを公開する単純なドットネットコンポーネントを作成できるため、 VBScript(または任意のCOM / ActiveXベースのテクノロジ)で使用できます。

  • (1)ドットネットライブラリタイプのプロジェクトを作成し、COMの相互運用性にするクラスを公開します(ComVisible属性とClassInterface属性を追加します)。遅延バインディングによってインスタンスを作成できるように、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-01-05T19:19:52.850 に答える