Objek Shell yang Dapat Ditulis

Windows Shell menyediakan sekumpulan objek otomatisasi canggih yang memungkinkan Anda memprogram Shell dengan Microsoft Visual Basic dan bahasa pembuatan skrip seperti Microsoft JScript (kompatibel dengan spesifikasi bahasa ECMA 262) dan Microsoft Visual Basic Scripting Edition (VBScript). Anda dapat menggunakan objek ini untuk mengakses banyak fitur dan kotak dialog Shell. Misalnya, Anda dapat mengakses sistem file, meluncurkan program, dan mengubah pengaturan sistem.

Bagian ini memperkenalkan objek Shell yang dapat ditulis.

Versi Shell

Banyak objek Shell tersedia di Shell versi 4.71 . Lainnya tersedia di versi 5.00 dan yang lebih baru. Versi 5.00 tersedia dengan Windows 2000. Tabel berikut mencantumkan setiap objek Shell di bawah versi Shell tempat objek tersedia.

Versi 4.71 Versi 5.00
Folder DIDiskQuotaUser
FolderItemVerb DiskQuotaControl
FolderItemVerbs Folder2
Shell FolderItem
ShellFolderView FolderItems
ShellUIHelper FolderItems2
ShellWindows IShellDispatch2
WebViewFolderContents IShellLinkDual2
ShellFolderItem
ShellFolderViewOC
ShellLinkObject

 

Membuat Instans Objek Shell

Untuk membuat instans objek Shell di aplikasi Visual Basic dengan pengikatan awal, tambahkan referensi ke pustaka berikut dalam proyek Anda:

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

Pengikatan Terlambat

Anda juga dapat membuat instans banyak objek Shell dengan pengikatan terlambat. Pendekatan ini berfungsi dalam aplikasi Visual Basic dan dalam skrip. Contoh berikut menunjukkan cara membuat instans objek Shell di JScript.

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

Contoh berikut menunjukkan cara membuat instans objek Folder di 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>

Dalam contoh sebelumnya, sDir adalah jalur ke objek Folder . Perhatikan bahwa nilai enumerasi ShellSpecialFolderConstants tidak tersedia dalam skrip.

ProgID untuk setiap objek Shell diperlihatkan dalam tabel berikut.

Object ProgID
DIDiskQuotaUser Microsoft.DiskQuota.1
DiskQuotaControl Tidak dapat terlambat mengikat
Folder Shell. Shell_Application.NameSpace("...")
Folder2 Shell. Shell_Application.NameSpace("...")
FolderItem Shell. Shell_Application.NameSpace("..."). Self atau Folder.Items.Item atau Folder.ParseName
FolderItems Folder.Item
FolderItems2 Folder.Item
FolderItemVerb Shell.NameSpace("..."). Self.Verbs.Item()
FolderItemVerbs FolderItem.Verbs atau Shell.NameSpace("..."). Self.Verbs
IShellDispatch2 Shell. Shell_Application
IShellLinkDual2 Shell.NameSpace("..."). Self.GetLink atau Shell.NameSpace("..."). Item(). GetLink
Shell Shell. Shell_Application
ShellFolderItem Shell.NameSpace("..."). Self atau Shell.NameSpace("..."). Item()
ShellFolderView Tidak dapat terlambat mengikat
ShellFolderViewOC Tidak dapat terlambat mengikat
ShellLinkObject Shell.NameSpace("..."). Self.GetLink atau Shell.NameSpace("..."). Item(). GetLink
ShellUIHelper Tidak dapat terlambat mengikat
ShellWindows Shell. Shell_Windows atau ShellWindows._NewEnum
WebViewFolderContents Tidak dapat terlambat mengikat

 

Elemen OBJEK HTML

Anda juga dapat menggunakan elemen OBJECT untuk membuat instans objek Shell di halaman HTML. Untuk melakukan ini, atur atribut ID elemen OBJECT ke nama variabel yang akan Anda gunakan dalam skrip Anda, dan identifikasi objek menggunakan nomor terdaftarnya (CLASSID). HTML berikut membuat instans objek ShellFolderItem menggunakan elemen OBJECT .

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

Tabel berikut mencantumkan setiap objek Shell dan CLASSID masing-masing.

Objek shell CLASSID
DIDiskQuotaUser 7988B571-EC89-11cf-9C00-00AA00A14F56
DiskQuotaControl 7988B571-EC89-11cf-9C00-00AA00A14F56
Folder 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

 

Objek Shell

Objek Shell mewakili objek di Shell. Anda dapat menggunakan metode yang diekspos oleh objek Shell untuk:

  • Buka, jelajahi, dan telusuri folder.
  • Minimalkan, pulihkan, kaskade, atau buka jendela petak peta.
  • Luncurkan aplikasi Panel Kontrol.
  • Tampilkan kotak dialog sistem.

Pengguna mungkin paling akrab dengan perintah yang mereka akses dari menu Mulai dan menu pintasan taskbar. Menu pintasan taskbar muncul saat pengguna mengklik kanan taskbar. Aplikasi HTML (HTA) berikut menghasilkan halaman mulai dengan tombol yang mengimplementasikan banyak metode objek Shell . Beberapa metode ini mengimplementasikan fitur pada menu Mulai dan menu pintasan taskbar.

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

Keamanan

Sebagai aplikasi, HTA berjalan di bawah model keamanan yang berbeda dari halaman web. Untuk berinteraksi dengan halaman web yang mengimplementasikan fungsionalitas objek Shell, pengguna harus mengaktifkan Inisialisasi dan skrip Kontrol ActiveX yang tidak ditandai sebagai opsi aman untuk zona keamanan tempat mereka melihat halaman.

Objek Folder

Objek Folder mewakili folder Shell. Anda dapat menggunakan metode yang diekspos oleh objek Folder untuk:

  • Mendapatkan informasi tentang folder.
  • Buat subfolder.
  • Salin dan pindahkan objek file ke dalam folder.

Objek FolderItem mewakili item dalam folder Shell. Propertinya memungkinkan Anda untuk mengambil informasi tentang item. Anda dapat menggunakan metode yang diekspos oleh objek ini untuk menjalankan kata kerja item, atau untuk mengambil informasi tentang objek FolderItemVerbs item.

Objek FolderItems mewakili kumpulan item dalam folder Shell. Metode dan propertinya memungkinkan Anda untuk mengambil informasi tentang koleksi.

Contoh Visual Basic berikut ini memperlihatkan hubungan antara beberapa objek folder dan bagaimana mereka dapat digunakan bersama-sama. Ketika pengguna mengklik tombol perintah yang disebut cmdGetPath, program menampilkan kotak dialog yang memungkinkan pengguna untuk memilih folder dari Komputer Saya, di mana ssfDRIVES adalah nilai enumerasi ShellSpecialFolderConstants untuk Komputer Saya. Saat pengguna memilih folder, jalur folder ditampilkan dalam kotak teks yang disebut 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

Dalam VBScript, fungsi ini sedikit berbeda karena nilai enumerasi ShellSpecialFolderConstants tidak tersedia dalam skrip. Contoh berikut menunjukkan VBScript yang setara dengan contoh sebelumnya.

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

Dalam contoh JScript berikut, yang merupakan terjemahan langsung dari contoh VBScript sebelumnya, perhatikan bagaimana tanda kurung kosong '()' digunakan untuk memanggil metode Item dan 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>