Compartilhar via


Objetos shell que podem ser gerados por script

O Shell do Windows fornece um conjunto poderoso de objetos de automação que permitem programar o Shell com o Microsoft Visual Basic e linguagens de script, como o Microsoft JScript (compatível com a especificação de linguagem ECMA 262) e o Microsoft Visual Basic Scripting Edition (VBScript). Você pode usar esses objetos para acessar muitos dos recursos e caixas de diálogo do Shell. Por exemplo, você pode acessar o sistema de arquivos, iniciar programas e alterar as configurações do sistema.

Esta seção apresenta os objetos Shell com script.

Versões do Shell

Muitos dos objetos Shell ficaram disponíveis na versão 4.71 do Shell. Outros estão disponíveis na versão 5.00 e posterior. A versão 5.00 ficou disponível com o Windows 2000. A tabela a seguir lista cada objeto Shell na versão do Shell na qual o objeto ficou disponível.

Versão 4.71 Versão 5.00
Pasta DIDiskQuotaUser
FolderItemVerb DiskQuotaControl
FolderItemVerbs Folder2
Shell FolderItem
ShellFolderView FolderItems
ShellUIHelper FolderItems2
ShellWindows IShellDispatch2
WebViewFolderContents IShellLinkDual2
ShellFolderItem
ShellFolderViewOC
ShellLinkObject

 

Instanciando objetos shell

Para instanciar os objetos Shell em aplicativos do Visual Basic com associação antecipada, adicione referências às seguintes bibliotecas em seu projeto:

  • Controles de Internet da Microsoft (SHDocVw)
  • Controles e automação do Microsoft Shell (Shell32)

Associação tardia

Você também pode instanciar muitos dos objetos Shell com associação tardia. Essa abordagem funciona em aplicativos do Visual Basic e no script. O exemplo a seguir mostra como instanciar o objeto Shell no JScript.

<SCRIPT LANGUAGE="JScript">
<!--
    function fnCreateShell()    
    {
        // Instantiate the Shell object and invoke its FileRun method.
        var oShell = new ActiveXObject("shell.application");
        oshell.FileRun;
    }
-->
</SCRIPT>

O exemplo a seguir mostra como instanciar o objeto Folder no VBScript.

<SCRIPT LANGUAGE="VBScript">
<!--
    function fnCreateFolder()
        dim oShell    
        dim oFolder
        dim sDir

        sDir = "C:\SomePath" 
        set oShell = CreateObject("shell.application")
        set oFolder = oShell.NameSpace(sDir)  
    end function
-->  
</SCRIPT>

No exemplo anterior, sDir é o caminho para o objeto Folder . Observe que os valores de enumeração ShellSpecialFolderConstants não estão disponíveis no script.

O ProgID para cada um dos objetos Shell é mostrado na tabela a seguir.

Objeto ProgID
DIDiskQuotaUser Microsoft.DiskQuota.1
DiskQuotaControl Não é possível associação tardia
Pasta Shell. Shell_Application.NameSpace("...")
Folder2 Shell. Shell_Application.NameSpace("...")
FolderItem Shell. Shell_Application.NameSpace("..."). Self ou Folder.Items.Item ou Folder.ParseName
FolderItems Folder.Items
FolderItems2 Folder.Items
FolderItemVerb Shell.NameSpace("..."). Self.Verbs.Item()
FolderItemVerbs FolderItem.Verbs ou Shell.NameSpace("..."). Auto.Verbos
IShellDispatch2 Shell. Shell_Application
IShellLinkDual2 Shell.NameSpace("..."). Self.GetLink ou Shell.NameSpace("..."). Itens(). GetLink
Shell Shell. Shell_Application
ShellFolderItem Shell.NameSpace("..."). Self ou Shell.NameSpace("..."). Itens()
ShellFolderView Não é possível associação tardia
ShellFolderViewOC Não é possível associação tardia
ShellLinkObject Shell.NameSpace("..."). Self.GetLink ou Shell.NameSpace("..."). Itens(). GetLink
ShellUIHelper Não é possível associação tardia
ShellWindows Shell. Shell_Windows ou ShellWindows._NewEnum
WebViewFolderContents Não é possível associação tardia

 

Elemento HTML OBJECT

Você também pode usar o elemento OBJECT para instanciar objetos Shell em uma página HTML. Para fazer isso, defina o atributo ID do elemento OBJECT como o nome da variável que você usará em seus scripts e identifique o objeto usando seu número registrado (CLASSID). O HTML a seguir cria uma instância do objeto ShellFolderItem usando o elemento OBJECT .

<OBJECT ID="oShFolderItem" 
    NAME="Shell Folder Item Object"
    CLASSID="clsid:2fe352ea-fd1f-11d2-b1f4-00c04f8eeb3e">
</OBJECT>

A tabela a seguir lista cada objeto Shell e seu respectivo CLASSID.

Objeto Shell CLASSID
DIDiskQuotaUser 7988B571-EC89-11cf-9C00-00AA00A14F56
DiskQuotaControl 7988B571-EC89-11cf-9C00-00AA00A14F56
Pasta BBCBDE60-C3FF-11CE-8350-444553540000
Folder2 f0d2d8ef-3890-11d2-bf8b-00c04fb93661
FolderItem 744129E0-CBE5-11CE-8350-444553540000
FolderItems 744129E0-CBE5-11CE-8350-444553540000
FolderItems2 C94F0AD0-F363-11d2-A327-00C04F8EEC7F
FolderItemVerb 08EC3E00-50B0-11CF-960C-0080C7F4EE85
FolderItemVerbs 1F8352C0-50B0-11CF-960C-0080C7F4EE85
IShellDispatch2 A4C6892C-3BA9-11d2-9DEA-00C04FB16162
IShellLinkDual2 317EE249-F12E-11d2-B1E4-00C04F8EEB3E
Shell 13709620-C279-11CE-A49E-444553540000
ShellFolderItem 2fe352ea-fd1f-11d2-b1f4-00c04f8eeb3e
ShellFolderView 62112AA1-EBE4-11cf-A5FB-0020AFE7292D
ShellFolderViewOC 4a3df050-23bd-11d2-939f-00a0c91eedba
ShellLinkObject 11219420-1768-11d1-95BE-00609797EA4F
ShellUIHelper 64AB4BB7-111E-11D1-8F79-00C04FC2FBE1
ShellWindows 9BA05972-F6A8-11CF-A442-00A0C90A8F39
WebViewFolderContents 1820FED0-473E-11D0-A96C-00C04FD705A2

 

Objeto Shell

O objeto Shell representa os objetos no Shell. Você pode usar os métodos expostos pelo objeto Shell para:

  • Abra, explore e procure pastas.
  • Minimize, restaure, em cascata ou janelas abertas de bloco.
  • Inicie Painel de Controle aplicativos.
  • Exibir caixas de diálogo do sistema.

Talvez os usuários estejam mais familiarizados com os comandos que acessam no menu Iniciar e no menu de atalho da barra de tarefas. O menu de atalho da barra de tarefas é exibido quando os usuários clicam com o botão direito do mouse na barra de tarefas. O HTA (Aplicativo HTML) a seguir produz uma página inicial com botões que implementam muitos dos métodos do objeto Shell . Alguns desses métodos implementam recursos no menu Iniciar e no menu de atalho da barra de tarefas.

<HTML>
<HEAD>
    <TITLE>Start Page</TITLE>
    
    <OBJECT ID="oShell"
        CLASSID="clsid:13709620-C279-11CE-A49E-444553540000">
    </OBJECT>
    
    <STYLE>
        INPUT {width: 200} 
    </STYLE>  
    
    <SCRIPT LANGUAGE="VBScript">
    <!--
        function fnStart(sMethod)
            select case sMethod
              case 0    
                  'Minimizes all windows on the desktop
                oshell.Shell_MinimizeAll
              case 1  
                  'Displays the Run dialog box
                oshell.FileRun
              case 2  
                  'Displays the Shut Down Windows dialog box
                oshell.Shell_ShutdownWindows
              case 3  
                  'Displays the Find dialog box
                oshell.Shell_FindFilesr
              case 4  
                  'Displays the Date/Time dialog box
                oshell.Shell_SetTime 
              case 5  
                  'Displays the Internet Properties dialog box
                oshell.Shell_ControlPanelItem "INETCPL.cpl"
              case 6  
                  'Explores the My Documents folder
                oshell.Shell_Explore "C:\My Documents"
              case 7  
                  'Enables user to select folder from Program Files
                oshell.Shell_BrowseForFolder 0, "My Programs", 0, "C:\Program Files" 
              case 8  
                  'Opens the Favorites folder
                oshell.Shell_Open "C:\WINDOWS\Favorites"
              case 9  
                  'Displays the Taskbar Properties dialog box
                oshell.Shell_TrayProperties
            end select  
        end function      
    -->
    </SCRIPT>
</HEAD>

<BODY>
    <H1>Start...</H1>
    <INPUT type="button" value="Edit Taskbar Properties" onclick="fnStart(9)"><br>
    <INPUT type="button" value="Open Favorites Folder" onclick="fnStart(8)"><br>
    <INPUT type="button" value="Browse Program Files" onclick="fnStart(7)"><br>
    <INPUT type="button" value="Explore My Documents" onclick="fnStart(6)"><br>
    <INPUT type="button" value="Modify Internet Properties" onclick="fnStart(5)"><br>
    <INPUT type="button" value="Set System Time" onclick="fnStart(4)"><br>
    <INPUT type="button" value="Find a File or Folder" onclick="fnStart(3)"><br>
    <INPUT type="button" value="Shut Down Windows" onclick="fnStart(2)"><br>
    <INPUT type="button" value="Run" onclick="fnStart(1)">     
    <INPUT type="button" value="Minimize All Windows" onclick="fnStart(0)">     
</BODY>
</HTML>

Segurança

Como um aplicativo, um HTA é executado em um modelo de segurança diferente de uma página da Web. Para interagir com uma página da Web que implementa a funcionalidade dos objetos Shell, os usuários devem habilitar a opção Inicializar e gerar scripts de Controles ActiveX não marcados como seguros para a zona de segurança na qual estão exibindo a página.

Objetos Folder

O objeto Folder representa uma pasta Shell. Você pode usar os métodos expostos pelo objeto Folder para:

  • Obter informações sobre uma pasta.
  • Criar subpastas.
  • Copie e mova objetos de arquivo para a pasta .

O objeto FolderItem representa um item em uma pasta Shell. Suas propriedades permitem que você recupere informações sobre o item. Você pode usar os métodos expostos por esse objeto para executar os verbos de um item ou para recuperar informações sobre o objeto FolderItemVerbs de um item.

O objeto FolderItems representa uma coleção de itens em uma pasta Shell. Seus métodos e propriedades permitem que você recupere informações sobre a coleção.

O exemplo do Visual Basic a seguir mostra a relação entre vários dos objetos de pasta e como eles podem ser usados juntos. Quando o usuário clica no botão de comando chamado cmdGetPath, o programa exibe uma caixa de diálogo que permite ao usuário selecionar uma pasta em Meu Computador, em que ssfDRIVES é o valor de enumeração ShellSpecialFolderConstants para Meu Computador. Quando o usuário escolhe uma pasta, o caminho da pasta é exibido na caixa de texto chamada txtPath.

Private Sub cmdGetPath_Click()
    Dim oShell As New Shell
    Dim oFolder As Folder
    Dim oFolderItem As FolderItem
 
    Set oFolder = oshell.Shell_BrowseForFolder(Me.hWnd, "Select a Folder", 0, ssfDrives)
   
    Set oFolderItem = oFolderItems.Item

    txtPath.Text = oFolderItem.Path
End Sub

No VBScript, essa função é ligeiramente diferente porque os valores de enumeração ShellSpecialFolderConstants não estão disponíveis no script. O exemplo a seguir mostra o equivalente de VBScript do exemplo anterior.

<SCRIPT LANGUAGE="VBScript">
<!--
    function fnGetMyPathVB() 
        dim oShell
        dim oFolder
        dim oFolderItem
        
        set oShell = CreateObject("shell.application")      
        set oFolder = oshell.Shell_BrowseForFolder(0, "Choose a Folder", 0)             
        set oFolderItem = oFolder.Items.Item         
        
        document.all.item("myPath").innerText = oFolderItem.Path                                
    end function
-->
</SCRIPT>

No exemplo de JScript a seguir, que é uma tradução direta do exemplo anterior do VBScript, observe como os parênteses vazios '()' são usados para invocar os métodos Items e Item .

<SCRIPT LANGUAGE="JavaScript">
<!--
    function fnGetMyPathJ() 
    {       
        var oShell = new ActiveXObject("shell.application");
                    
        var oFolder = new Object;                   
        oFolder = oshell.Shell_BrowseForFolder(0, "Choose a folder", 0);
                                
        var oFolderItem = new Object;       
        oFolderItem = oFolder.Items().Item();                               
        
        document.all.item("myPath").innerText = oFolderItem.Path;
    }    
-->
</SCRIPT>