Freigeben über


Skriptfähige Shellobjekte

Die Windows Shell bietet eine leistungsstarke Gruppe von Automatisierungsobjekten, mit denen Sie die Shell mit Microsoft Visual Basic und Skriptsprachen wie Microsoft JScript (kompatibel mit ECMA 262-Sprachspezifikation) und Microsoft Visual Basic Scripting Edition (VBScript) programmieren können. Sie können diese Objekte verwenden, um auf viele der Features und Dialogfelder der Shell zuzugreifen. Sie können beispielsweise auf das Dateisystem zugreifen, Programme starten und Systemeinstellungen ändern.

In diesem Abschnitt werden die skriptfähigen Shell-Objekte vorgestellt.

Shellversionen

Viele der Shell-Objekte wurden in Version 4.71 der Shell verfügbar. Andere sind in Version 5.00 und höher verfügbar. Version 5.00 wurde mit Windows 2000 verfügbar. In der folgenden Tabelle sind die einzelnen Shell-Objekte unter der Version der Shell aufgeführt, in der das Objekt verfügbar wurde.

Version 4.71 Version 5.00
Ordner- DIDiskQuotaUser-
FolderItemVerb- DiskQuotaControl-
FolderItemVerbs- Ordner2-
Shell- FolderItem-
ShellFolderView- FolderItems-
ShellUIHelper- FolderItems2-
ShellWindows- IShellDispatch2-
WebViewFolderContents- IShellLinkDual2-
ShellFolderItem-
ShellFolderViewOC-
ShellLinkObject-

 

Instanziieren von Shellobjekten

Um die Shell-Objekte in Visual Basic-Anwendungen mit frühzeitiger Bindung zu instanziieren, fügen Sie Verweise auf die folgenden Bibliotheken in Ihrem Projekt hinzu:

  • Microsoft Internet Controls (SHDocVw)
  • Microsoft Shell-Steuerelemente und -Automatisierung (Shell32)

Späte Bindung

Sie können auch viele der Shell-Objekte mit verspäteter Bindung instanziieren. Dieser Ansatz funktioniert in Visual Basic-Anwendungen und in Skripts. Das folgende Beispiel zeigt, wie Das Shell--Objekt in JScript instanziieren.

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

Das folgende Beispiel zeigt, wie das Folder-Objekt in VBScript instanziieren.

<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>

Im vorherigen Beispiel ist sDir- der Pfad zum Folder-Objekt. Beachten Sie, dass die ShellSpecialFolderConstants Enumerationswerte im Skript nicht verfügbar sind.

Die ProgID für jedes Shell-Objekt wird in der folgenden Tabelle angezeigt.

Objekt ProgID
DIDiskQuotaUser- Microsoft.DiskQuota.1
DiskQuotaControl- Späte Bindung nicht möglich
Ordner- Muschel. Shell_Application.NameSpace("...")
Ordner2- Muschel. Shell_Application.NameSpace("...")
FolderItem- Muschel. Shell_Application.NameSpace("..."). Self oder Folder.Items.Item oder Folder.ParseName
FolderItems- Folder.Items
FolderItems2- Folder.Items
FolderItemVerb- Shell.NameSpace("..."). Self.Verbs.Item()
FolderItemVerbs- FolderItem.Verbs oder Shell.NameSpace("..."). Self.Verbs
IShellDispatch2- Muschel. Shell_Application
IShellLinkDual2- Shell.NameSpace("..."). Self.GetLink oder Shell.NameSpace("..."). Items(). GetLink
Shell- Muschel. Shell_Application
ShellFolderItem- Shell.NameSpace("..."). Self oder Shell.NameSpace("..."). Items()
ShellFolderView- Späte Bindung nicht möglich
ShellFolderViewOC- Späte Bindung nicht möglich
ShellLinkObject- Shell.NameSpace("..."). Self.GetLink oder Shell.NameSpace("..."). Items(). GetLink
ShellUIHelper- Späte Bindung nicht möglich
ShellWindows- Muschel. Shell_Windows oder ShellWindows._NewEnum
WebViewFolderContents- Späte Bindung nicht möglich

 

HTML OBJECT-Element

Sie können auch das OBJECT-Element verwenden, um Shellobjekte auf einer HTML-Seite zu instanziieren. Legen Sie dazu die OBJECT Element ID Attribut auf den Variablennamen fest, den Sie in Ihren Skripts verwenden, und identifizieren Sie das Objekt mithilfe der registrierten Nummer (CLASSID). Der folgende HTML-Code erstellt eine Instanz des ShellFolderItem- Objekts mithilfe des OBJECT-Elements.

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

In der folgenden Tabelle sind jedes Shell-Objekt und die jeweilige CLASSID aufgeführt.

Shell-Objekt CLASSID
DIDiskQuotaUser- 7988B571-EC89-11cf-9C00-00AA00A14F56
DiskQuotaControl- 7988B571-EC89-11cf-9C00-00AA00A14F56
Ordner- BBCBDE60-C3FF-11CE-8350-444553540000
Ordner2- 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-Objekt

Das Shell--Objekt stellt die Objekte in der Shell dar. Sie können die methoden verwenden, die vom Shell-Objekt verfügbar gemacht werden, um:

  • Öffnen, Erkunden und Suchen nach Ordnern.
  • Minimieren, Wiederherstellen, Kaskaden- oder Kachelfenster.
  • Starten Sie Die Systemsteuerungsanwendungen.
  • Dialogfelder des Systems anzeigen.

Benutzer sind vielleicht am vertrautsten mit den Befehlen, auf die sie über das Startmenü und das Kontextmenü der Taskleiste zugreifen. Das Kontextmenü der Taskleiste wird angezeigt, wenn Benutzer mit der rechten Maustaste auf die Taskleiste klicken. Die folgende HTML-Anwendung (HTA) erzeugt eine Startseite mit Schaltflächen, die viele der Methoden des Shell Objekts implementieren. Einige dieser Methoden implementieren Features im Startmenü und im Kontextmenü der Taskleiste.

<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>

Sicherheit

Als Anwendung wird ein HTA unter einem anderen Sicherheitsmodell als einer Webseite ausgeführt. Um mit einer Webseite zu interagieren, die die Funktionalität der Shell-Objekte implementiert, müssen Benutzer die Initialisierungs- und Skript-ActiveX-Steuerelemente aktivieren, die nicht als sicher Option für die Sicherheitszone gekennzeichnet sind, in der sie die Seite anzeigen.

Folder-Objekte

Das Folder-Objekt stellt einen Shellordner dar. Sie können die methoden verwenden, die vom Folder-Objekt verfügbar gemacht werden, um:

  • Abrufen von Informationen zu einem Ordner.
  • Erstellen von Unterordnern.
  • Kopieren und Verschieben von Dateiobjekten in den Ordner.

Das FolderItem-objekt stellt ein Element in einem Shellordner dar. Mit seinen Eigenschaften können Sie Informationen zum Element abrufen. Sie können die von diesem Objekt verfügbar gemachten Methoden verwenden, um die Verben eines Elements auszuführen, oder um Informationen zum FolderItemVerbs Objekt eines Elements abzurufen.

Das FolderItems- -Objekts stellt eine Auflistung von Elementen in einem Shell-Ordner dar. Mit seinen Methoden und Eigenschaften können Sie Informationen zur Sammlung abrufen.

Das folgende Visual Basic-Beispiel zeigt die Beziehung zwischen mehreren ordnerobjekten und deren Verwendung. Wenn der Benutzer auf die Befehlsschaltfläche cmdGetPathklickt, zeigt das Programm ein Dialogfeld an, in dem der Benutzer einen Ordner aus My Computerauswählen kann, wobei ssfDRIVES der ShellSpecialFolderConstants Enumerationswert für My Computerist. Wenn der Benutzer einen Ordner auswähelt, wird der Pfad des Ordners im Textfeld txtPathangezeigt.

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

In VBScript unterscheidet sich diese Funktion geringfügig, da die ShellSpecialFolderConstants Enumerationswerte im Skript nicht verfügbar sind. Das folgende Beispiel zeigt das VBScript-Äquivalent des vorherigen Beispiels.

<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>

Beachten Sie im folgenden JScript-Beispiel, bei dem es sich um eine direkte Übersetzung des vorherigen VBScript-Beispiels handelt, wie die leeren Klammern "()" verwendet werden, um die methoden Items und Item aufzurufen.

<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>