Método para mostrar el escritorio de Windows


Volver
'*********************************************************
' ShowDesktop
'
' Esta rutina hace que se muestre el escritorio de Windows
' de la misma manera que lo hace la funcionalidad "Mostrar
' escritorio" de la barra de tareas de Windows.
'
' Se trata simplemente de escribir en un fichero temporal
' las secuencias de comandos necesarias para lograrlo y
' después ejecutarlo. El texto del fichero viene a ser
' algo como:
'
'
' [Shell]
' Command = 2
' IconFile=explorer.exe,3
'
' [Taskbar]
' ToggleDesktop
'
'
' He aprovechado la ocasión para mostrar cómo obtener el
' nombre de un fichero temporal, a través de un objeto
' FileSystemObject, así como también para mostrar cómo
' ejecutar un programa o fichero con extensión registrada
' en el sistema (como es el caso que nos ocupa) con un
' objeto WShell, del Windows Scripting Host Model (WSH).
' Esto último también se puede hacer con el API
' ShellExecute o ShellExecuteEx (con el método
' "Application.FollowHyperlink" también se podía ejecutar
' este programa, pero mostraba un aviso de advertencia,
' con lo cual, no resultaba la mejor opción).
'
Sub ShowDesktop()
Dim FileName As String
Dim FileText As String
Dim fso As Object 'New FileSystemObject
Dim WShell As Object 'New wshShell

    ' obtenemos un nombre de archivo temporal
    Set fso = CreateObject("Scripting.FileSystemObject")
    FileName = fso.GetTempName
    ' quitamos la extensión ".tmp"
    FileName = Left(FileName, Len(FileName) - 4)
    ' y le añadimos la extensión ".scf"
    FileName = CurDir & "\" & FileName & ".scf"
    Set fso = Nothing
    
    ' escribimos una cadena con los comandos para el
    ' programa explorer.exe, que muestran el escritorio
    FileText = "[Shell]" & vbCrLf & "Command = 2" & _
    vbCrLf & "IconFile=explorer.exe,3" & vbCrLf _
    & "[Taskbar]" & vbCrLf & "Command=ToggleDesktop"
        
    ' escribimos el archivo temporal con la cadena
    Open FileName For Output As #1
    Print #1, FileText
    Close #1
    
    ' ejecutamos el archivo de secuencia de comandos
    Set WShell = CreateObject("WScript.Shell")
    WShell.Run Chr(34) & FileName & Chr(34)
    Set WShell = Nothing
    
    ' finalmente borramos el fichero temporal
    Kill FileName
    
End Sub
'*********************************************************
Contactar Última actualización 12/10/2003     © Juan M. Afán deRibera