VBScript диалог открытия файла, который работает в XP и Vista? - PullRequest
4 голосов
/ 15 апреля 2010

В XP вы можете использовать VBScript с объектом UserAccounts.CommonDialog, чтобы вызвать диалог открытия файла (, как описано здесь ), но, очевидно, , это не работает в Vista .

Существует ли метод VBScript для диалогов открытия файлов, который будет работать для обоих?

Или даже тот, который будет хорошо работать для Vista?

Отказ от ответственности: я хороший программист, честный, и обычно не работаю с VBScript - я задаю этот вопрос «для друга».

1 Ответ

1 голос
/ 05 января 2011

Вы можете создать простой точечный сетевой компонент , который предоставляет 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...