Ramon Torras

TECHNOLOGY ENTHUSIAST

Comprobar i abrir exe con script en cliente(vbscript)

A veces te interesa saber si un fichero existe o no existe en el cliente i hacer una cosa o otra.
Con ASP esto es impossible asi que hay que tirar de script en cliente, Javascript o VBScript. En este caso he utilitzado un script en VBScript para abrir un exe en funcion del path. Si no lo encuentra hace caso omiso i se va al siguiente path.
 
Eso puede ser util, como en mi caso, para abrir el Word, Outlook, o cualquier elemento del paquete office. Claro dependiendo de la versión de office de cada ordenador el path es diferente.
 
Es una funcion donde le passamos el fichero exe y los path por orden de busqueda de existencia.
 
Aqui pongo el codigo en VBScript
 

<

script type= text/vbscript language= VBScript >

  Sub

ExecutaOutlook(programa,iniciaren,iniciaren2,iniciaren3)

 

    dim FSO

    set FSO = CreateObject( Scripting.FileSystemObject )

 

    Dim objWMIService, objProcess, objCalc

    Dim strShell, objProgram

    ‘ Connect to WMI

    set objWMIService = getobject( winmgmts:{impersonationLevel=impersonate}!/root/cimv2 )

    ‘ Obtain the Win32_Process class of object.

    Set objProcess = objWMIService.Get( Win32_Process )

    Set objProgram = objProcess.Methods_( Create ).InParameters.SpawnInstance_

 

    if FSO.FileExists (iniciaren& outlook.exe ) then
        objProgram.CommandLine = iniciaren & programa
        objProgram.CurrentDirectory = iniciaren
        ‘Execute the program now at the command line.
        Set strShell = objWMIService.ExecMethod( Win32_Process , Create , objProgram)
    else

        if FSO.FileExists (iniciaren2& outlook.exe ) then

            objProgram.CommandLine = iniciaren2 & programa

            objProgram.CurrentDirectory = iniciaren2

            ‘Execute the program now at the command line.

            Set strShell = objWMIService.ExecMethod( Win32_Process , Create , objProgram)
        else

            if FSO.FileExists (iniciaren3& outlook.exe ) then

                 objProgram.CommandLine = iniciaren3 & programa

                 objProgram.CurrentDirectory = iniciaren3

                 ‘Execute the program now at the command line.

                 Set strShell = objWMIService.ExecMethod( Win32_Process , Create , objProgram)
            end if
        end if

    end if

End Sub

</

script>

 
En mi caso queria abrir el la bandeja de entrada del outlook. Primero el 2003, sino lo encuentra pues el 2003 en ingles y tampoco pues el office 2000:
 

    iniciaren = c: Archivos de programa Microsoft office office11

    iniciaren2 = c: Program files Microsoft office office11

    iniciaren3 = c: Archivos de programa Microsoft office office
 

Dim program As String = outlook.exe /select outlook:inbox

Dim ruta As String = ExecutaOutlook(‘ + program + ‘,’ + iniciaren + ‘,’ + iniciaren2 + ‘,’ + iniciaren3 + ‘)

NOTA: Hay que chequear los permisos de seguridad del Internet Explorer para permitir el ActiveX

Comments are currently closed.