Megosztás a következőn keresztül:


Szkriptelhető shell-objektumok

A Windows Shell számos olyan automatizálási objektumot biztosít, amelyek lehetővé teszik a Shell programozását a Microsoft Visual Basic és a szkriptelési nyelvek, például a Microsoft JScript (az ECMA 262 nyelvi specifikációjával kompatibilis) és a Microsoft Visual Basic Scripting Edition (VBScript) használatával. Ezekkel az objektumokkal elérheti a Shell számos funkcióját és párbeszédpaneljét. Elérheti például a fájlrendszert, elindíthatja a programokat, és módosíthatja a rendszer beállításait.

Ez a szakasz bemutatja a szkriptelhető Shell-objektumokat.

Shell-verziók

Számos Shell-objektum elérhetővé vált a Shell 4.71-es verziójában . Mások az 5.00-s és újabb verziókban érhetők el. Az 5.00-s verzió elérhetővé vált a Windows 2000-ben. Az alábbi táblázat felsorolja az összes Shell-objektumot annak a Shell-verziónak a verziójában, amelyben az objektum elérhetővé vált.

4.71-es verzió 5.00-s verzió
mappa DIDiskQuotaUser
FolderItemVerb DiskQuotaControl
FolderItemVerbs Folder2
Shell- FolderItem
ShellFolderView FolderItems
ShellUIHelper FolderItems2
ShellWindows IShellDispatch2
WebViewFolderContents IShellLinkDual2
ShellFolderItem
ShellFolderViewOC
ShellLinkObject

 

Shell-objektumok példányosítása

Ha korai kötéssel szeretné példányosítani a Shell-objektumokat a Visual Basic-alkalmazásokban, adjon hozzá hivatkozásokat a projekt alábbi kódtáraihoz:

  • Microsoft Internet Controls (SHDocVw)
  • Microsoft Shell Controls and Automation (Shell32)

Késői kötés

Emellett számos Shell-objektumot is létrehozhat késői kötéssel. Ez a megközelítés Visual Basic-alkalmazásokban és szkriptekben is működik. Az alábbi példa bemutatja, hogyan példányosíthatja a Shell objektumot a JScriptben.

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

Az alábbi példa bemutatja, hogyan példányosíthatja a Mappa objektumot a VBScriptben.

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

Az előző példában sDir az Mappa objektum elérési útja. Vegye figyelembe, hogy a ShellSpecialFolderConstants enumerálási értékek nem érhetők el a szkriptben.

Az egyes Shell-objektumok progID-azonosítója az alábbi táblázatban látható.

Tárgy ProgID
DIDiskQuotaUser Microsoft.DiskQuota.1
DiskQuotaControl Nem lehet késői kötést létrehozni
mappa héj. Shell_Application.NameSpace("...")
Folder2 héj. Shell_Application.NameSpace("...")
FolderItem héj. Shell_Application.NameSpace("..."). Self vagy Folder.Items.Item vagy Folder.ParseName
FolderItems Folder.Items
FolderItems2 Folder.Items
FolderItemVerb Shell.NameSpace("..."). Self.Verbs.Item()
FolderItemVerbs FolderItem.Verbs vagy Shell.NameSpace("..."). Self.Verbs
IShellDispatch2 héj. Shell_Application
IShellLinkDual2 Shell.NameSpace("..."). Self.GetLink vagy Shell.NameSpace("..."). Elemek(). GetLink
Shell- héj. Shell_Application
ShellFolderItem Shell.NameSpace("..."). Self or Shell.NameSpace("..."). Elemek()
ShellFolderView Nem lehet késői kötést létrehozni
ShellFolderViewOC Nem lehet késői kötést létrehozni
ShellLinkObject Shell.NameSpace("..."). Self.GetLink vagy Shell.NameSpace("..."). Elemek(). GetLink
ShellUIHelper Nem lehet késői kötést létrehozni
ShellWindows héj. Shell_Windows vagy ShellWindows._NewEnum
WebViewFolderContents Nem lehet késői kötést létrehozni

 

HTML OBJECT Elem

Az OBJECT elemet is használhatja a Shell-objektumok HTML-oldalon való példányosításához. Ehhez állítsa az OBJECT elem azonosítójának attribútumát a szkriptekben használni kívánt változónévre, és azonosítsa az objektumot a regisztrált számával (CLASSID). Az alábbi HTML a ShellFolderItem objektum egy példányát hozza létre az OBJECT elem használatával.

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

Az alábbi táblázat felsorolja az egyes Shell-objektumokat és a hozzájuk tartozó CLASSID azonosítót.

Shell-objektum CLASSID
DIDiskQuotaUser 7988B571-EC89-11cf-9C00-00AA00A14F56
DiskQuotaControl 7988B571-EC89-11cf-9C00-00AA00A14F56
mappa 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

 

Shell-objektum

A Shell objektum a Shell objektumait jelöli. A Shell-objektum által közzétett metódusokat a következő módokon használhatja:

  • Mappák megnyitása, felfedezése és tallózása.
  • Kis méretűre, visszaállításra, kaszkádoltra vagy csempére nyitott ablakok.
  • Indítsa el a Vezérlőpult-alkalmazásokat.
  • Rendszer párbeszédpanelek megjelenítése.

A felhasználók talán leginkább ismerik a Start menüből és a tálca helyi menüjéből elérhető parancsokat. A tálca helyi menüje akkor jelenik meg, amikor a felhasználók a jobb gombbal a tálcára kattintanak. A következő HTML-alkalmazás (HTA) létrehoz egy kezdőlapot olyan gombokkal, amelyek a Shell objektum metódusainak nagy részét implementálják. Ezen módszerek némelyike a Start menü és a tálca helyi menüjének funkcióit valósítja meg.

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

Biztonság

Alkalmazásként a HTA egy weblaptól eltérő biztonsági modellben fut. Ha olyan weblapot szeretne használni, amely megvalósítja a Shell-objektumok funkcióit, a felhasználóknak engedélyezniük kell a Az ActiveX-vezérlők inicializálása és szkriptje nincs megjelölve biztonságos beállításként ahhoz a biztonsági zónához, amelyben megtekintik a lapot.

Mappaobjektumok

A mappa objektum egy Shell-mappát jelöl. A Mappa objektum által közzétett metódusokat a következő módokon használhatja:

  • Információk lekérése egy mappáról.
  • Almappák létrehozása.
  • Fájlobjektumok másolása és áthelyezése a mappába.

A FolderItem objektum egy Shell-mappában lévő elemet jelöl. A tulajdonságok lehetővé teszik az elem adatainak lekérését. Az objektum által közzétett metódusokkal futtathatja egy elem igéit, vagy lekérheti az elem FolderItemVerbs objektumával kapcsolatos információkat.

A FolderItems objektum egy Shell-mappa elemeinek gyűjteményét jelöli. A metódusok és tulajdonságok lehetővé teszik a gyűjtemény adatainak lekérését.

Az alábbi Visual Basic-példa a mappaobjektumok több objektuma közötti kapcsolatot és azok együttes használatát mutatja be. Amikor a felhasználó az cmdGetPathnevű parancsgombra kattint, a program egy párbeszédpanelt jelenít meg, amely lehetővé teszi, hogy a felhasználó kijelöljön egy mappát Saját számítógép, ahol az ssfDRIVES a ShellSpecialFolderConstantsSaját számítógépenumerálási értéke. Amikor a felhasználó kiválaszt egy mappát, a mappa elérési útja megjelenik a txtPathnevű szövegmezőben.

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

A VBScriptben ez a függvény kissé eltérő, mert a ShellSpecialFolderConstants enumerálási értékek nem érhetők el a szkriptben. Az alábbi példa az előző példa VBScript-ekvivalensét mutatja be.

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

Az alábbi JScript-példában, amely az előző VBScript-példa közvetlen fordítása, figyelje meg, hogy az üres zárójelek ()" hogyan hívják meg az Elemek és Elem metódusokat.

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