Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Windows Shell fournit un ensemble puissant d’objets d’automatisation qui vous permettent de programmer l’interpréteur de commandes avec Microsoft Visual Basic et des langages de script tels que Microsoft JScript (compatible avec la spécification du langage ECMA 262) et Microsoft Visual Basic Scripting Edition (VBScript). Vous pouvez utiliser ces objets pour accéder à la plupart des fonctionnalités et boîtes de dialogue de l’interpréteur de commandes. Par exemple, vous pouvez accéder au système de fichiers, lancer des programmes et modifier les paramètres système.
Cette section présente les objets Shell scriptables.
- versions Shell
-
instanciation d’objets Shell
- de liaison tardive
- 'élément HTML OBJECT
- d’objet Shell
- d’objets de dossier
Versions de l’interpréteur de commande
De nombreux objets Shell sont devenus disponibles dans version 4.71 de l’interpréteur de commandes. D’autres sont disponibles dans la version 5.00 et ultérieures. La version 5.00 est devenue disponible avec Windows 2000. Le tableau suivant répertorie chaque objet Shell sous la version de Shell dans laquelle l’objet est devenu disponible.
| Version 4.71 | Version 5.00 |
|---|---|
| dossier | DIDiskQuotaUser |
| FolderItemVerb | DiskQuotaControl |
| FolderItemVerbs | dossier2 |
| Shell | FolderItem |
| ShellFolderView | FolderItems |
| shellUIHelper | FolderItems2 |
| ShellWindows | IShellDispatch2 |
| WebViewFolderContents | IShellLinkDual2 |
| ShellFolderItem | |
| ShellFolderViewOC | |
| ShellLinkObject |
Instanciation d’objets Shell
Pour instancier les objets Shell dans les applications Visual Basic avec une liaison anticipée, ajoutez des références aux bibliothèques suivantes dans votre projet :
- Contrôles Microsoft Internet (SHDocVw)
- Contrôles Et automatisation Microsoft Shell (Shell32)
Liaison tardive
Vous pouvez également instancier un grand nombre d’objets Shell avec une liaison tardive. Cette approche fonctionne dans les applications Visual Basic et dans le script. L’exemple suivant montre comment instancier l’objet Shell dans JScript.
<SCRIPT LANGUAGE="JScript">
<!--
function fnCreateShell()
{
// Instantiate the Shell object and invoke its FileRun method.
var oShell = new ActiveXObject("shell.application");
oshell.FileRun;
}
-->
</SCRIPT>
L’exemple suivant montre comment instancier l’objet Folder dans 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>
Dans l’exemple précédent, sDir est le chemin d’accès à l’objetFolder. Notez que les valeurs d’énumération ShellSpecialFolderConstants ne sont pas disponibles dans le script.
Le ProgID pour chacun des objets Shell est illustré dans le tableau suivant.
| Objet | ProgID |
|---|---|
| DIDiskQuotaUser | Microsoft.DiskQuota.1 |
| DiskQuotaControl | Impossible de lier tardivement |
| dossier | coquille. Shell_Application.NameSpace(« ... ») |
| dossier2 | coquille. Shell_Application.NameSpace(« ... ») |
| FolderItem | coquille. 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 | coquille. Shell_Application |
| IShellLinkDual2 | Shell.NameSpace(« ... »). Self.GetLink ou Shell.NameSpace(« ... »). Items(). GetLink |
| Shell | coquille. Shell_Application |
| ShellFolderItem | Shell.NameSpace(« ... »). Self ou Shell.NameSpace(« ... »). Items() |
| ShellFolderView | Impossible de lier tardivement |
| ShellFolderViewOC | Impossible de lier tardivement |
| ShellLinkObject | Shell.NameSpace(« ... »). Self.GetLink ou Shell.NameSpace(« ... »). Items(). GetLink |
| shellUIHelper | Impossible de lier tardivement |
| ShellWindows | coquille. Shell_Windows ou ShellWindows._NewEnum |
| WebViewFolderContents | Impossible de lier tardivement |
ÉLÉMENT HTML OBJECT
Vous pouvez également utiliser l’élément OBJECT pour instancier des objets Shell sur une page HTML. Pour ce faire, définissez l'OBJECT l’ID de l’élément l’attribut de la variable que vous utiliserez dans vos scripts et identifiez l’objet à l’aide de son numéro inscrit (CLASSID). Le code HTML suivant crée une instance de l’objet ShellFolderItem à l’aide de l’élément OBJECT.
<OBJECT ID="oShFolderItem"
NAME="Shell Folder Item Object"
CLASSID="clsid:2fe352ea-fd1f-11d2-b1f4-00c04f8eeb3e">
</OBJECT>
Le tableau suivant répertorie chaque objet Shell et son CLASSID respectif.
| Objet Shell | CLASSID |
|---|---|
| DIDiskQuotaUser | 7988B571-EC89-11cf-9C00-00AA00A14F56 |
| DiskQuotaControl | 7988B571-EC89-11cf-9C00-00AA00A14F56 |
| dossier | BBCBDE60-C3FF-11CE-8350-444553540000 |
| dossier2 | 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 |
Shell, objet
L’objetshellreprésente les objets dans l’interpréteur de commandes. Vous pouvez utiliser les méthodes exposées par l’objet Shell pour :
- Ouvrez, explorez et recherchez des dossiers.
- Réduisez, restaurez, cascade ou vignettez des fenêtres ouvertes.
- Lancez les applications du Panneau de configuration.
- Afficher les boîtes de dialogue système.
Les utilisateurs sont peut-être les plus familiarisés avec les commandes qu’ils accèdent à partir du menu Démarrer et du menu contextuel de la barre des tâches. Le menu contextuel de la barre des tâches s’affiche lorsque les utilisateurs cliquent avec le bouton droit sur la barre des tâches. L’application HTML (HTA) suivante produit une page de démarrage avec des boutons qui implémentent de nombreuses méthodes Shell objet. Certaines de ces méthodes implémentent des fonctionnalités dans le menu Démarrer et le menu contextuel de la barre des tâches.
<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>
Sécurité
En tant qu’application, un HTA s’exécute sous un modèle de sécurité différent d’une page web. Pour interagir avec une page web qui implémente les fonctionnalités des objets Shell, les utilisateurs doivent activer l'Initialiser et scripter les contrôles ActiveX non marqués comme sécurisés option pour la zone de sécurité dans laquelle ils consultent la page.
Objets de dossier
L’objet Folder représente un dossier Shell. Vous pouvez utiliser les méthodes exposées par l’objet Folder pour :
- Obtenez des informations sur un dossier.
- Créez des sous-dossiers.
- Copiez et déplacez des objets de fichier dans le dossier.
L’objet FolderItem représente un élément dans un dossier Shell. Ses propriétés vous permettent de récupérer des informations sur l’élément. Vous pouvez utiliser les méthodes exposées par cet objet pour exécuter les verbes d’un élément ou récupérer des informations sur les FolderItemVerbs d’un élément objet.
L’objet FolderItems représente une collection d’éléments dans un dossier Shell. Ses méthodes et ses propriétés vous permettent de récupérer des informations sur la collection.
L’exemple Visual Basic suivant montre la relation entre plusieurs objets de dossier et la façon dont ils peuvent être utilisés ensemble. Lorsque l’utilisateur clique sur le bouton de commande appelé cmdGetPath, le programme affiche une boîte de dialogue qui permet à l’utilisateur de sélectionner un dossier dans Mon ordinateur, où ssfDRIVES est le ShellSpecialFolderConstants valeur d’énumération pour Mon ordinateur. Lorsque l’utilisateur choisit un dossier, le chemin d’accès du dossier s’affiche dans la zone de texte appelée 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
Dans VBScript, cette fonction est légèrement différente, car les valeurs d’énumération ShellSpecialFolderConstants ne sont pas disponibles dans le script. L’exemple suivant montre l’équivalent VBScript de l’exemple précédent.
<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>
Dans l’exemple JScript suivant, qui est une traduction directe de l’exemple VBScript précédent, notez comment les parenthèses vides '()' sont utilisées pour appeler les méthodes Items et 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>