Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Windows Shell 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
-
de objetos shell de instanciação
- de associação tardia
- elemento HTML OBJECT
- de objeto shell
- objetos de pasta
Versões do Shell
Muitos dos objetos Shell ficaram disponíveis no 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 |
|---|---|
| de Pasta | DIDiskQuotaUser |
| FolderItemVerb | DiskQuotaControl |
| FolderItemVerbs | da Pasta2 |
| Shell | FolderItem |
| ShellFolderView | FolderItems |
| ShellUIHelper | FolderItems2 |
| shellWindows | IShellDispatch2 |
| WebViewFolderContents | IShellLinkDual2 |
| ShellFolderItem | |
| ShellFolderViewOC | |
| ShellLinkObject |
Instanciando objetos shell
Para criar uma instância dos 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 criar uma instância de 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 criar uma instância do 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 criar uma instância do 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 objetopasta. 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 |
| de Pasta | concha. Shell_Application.NameSpace("...") |
| da Pasta2 | concha. Shell_Application.NameSpace("...") |
| FolderItem | concha. 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("..."). Self.Verbs |
| IShellDispatch2 | concha. Shell_Application |
| IShellLinkDual2 | Shell.NameSpace("..."). Self.GetLink ou Shell.NameSpace("..."). Itens(). GetLink |
| Shell | concha. 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 | concha. 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 do elemento OBJECT do para 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 sua respectiva CLASSID.
| Objeto Shell | CLASSID |
|---|---|
| DIDiskQuotaUser | 7988B571-EC89-11cf-9C00-00AA00A14F56 |
| DiskQuotaControl | 7988B571-EC89-11cf-9C00-00AA00A14F56 |
| de Pasta | BBCBDE60-C3FF-11CE-8350-444553540000 |
| da Pasta2 | 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 shellrepresenta os objetos no Shell. Você pode usar os métodos expostos pelo objeto Shell para:
- Abra, explore e procure pastas.
- Minimizar, restaurar, em cascata ou abrir blocos janelas abertas.
- Inicie aplicativos do Painel de Controle.
- 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 o Inicializar e criar scripts de Controles ActiveX não marcados como seguros opção para a zona de segurança na qual estão exibindo a página.
Objetos de pasta
O objetopastarepresenta uma pasta Shell. Você pode usar os métodos expostos pelo objeto Folder para:
- Obtenha 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 que o usuário selecione uma pasta de My Computer, em que ssfDRIVES é o ShellSpecialFolderConstants valor de enumeração para My Computer. 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 ShellSpecialFolderConstants valores de enumeração 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 VBScript anterior, observe como os parênteses vazios '()' são usados para invocar os métodosItense 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>