windows-vista vbscript windows-xp fileopendialog

windows vista - ¿Abrir el cuadro de diálogo VBScript que funciona en XP y Vista?



windows-vista windows-xp (1)

Puede crear un componente de red punto simple que expone una interfaz COM , para que pueda usarlo en VBScript (o cualquier tecnología COM / ActiveX ).

  • (1) Cree un proyecto de tipo de biblioteca dot net, exponga las clases que desea que sean de interoperabilidad COM (agregando atributos ComVisible y ClassInterface ). El atributo ClassInterface debe establecerse en AutoDual para que pueda crear instancias por enlace tardío .
  • (2) marque el registro para la casilla de verificación de interoperabilidad COM en la pestaña de compilación desde el cuadro de diálogo de propiedades del proyecto.
  • (3) compile el proyecto, de modo que el componente se pueda registrar correctamente (tiene la opción de crear un proyecto de instalación para su componente para que se pueda implementar fácilmente).

...

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; } } }

Una vez que se haya registrado su componente, puede crear una instancia desde 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

En XP, puede usar VBScript con el objeto UserAccounts.CommonDialog para abrir un cuadro de diálogo Abrir archivo ( como se describe aquí ), pero aparentemente esto no funciona en Vista .

¿Existe un método VBScript para los diálogos de Abrir archivo que funcionará para ambos?

¿O incluso uno que funcione bien para Vista?

Descargo de responsabilidad: soy un programador adecuado, honesto, y generalmente no trabajo con VBScript. Hago esta pregunta ''para un amigo''.