Aracılığıyla paylaş


Betik Yazılabilir Kabuk Nesneleri

Windows Kabuğu, Kabuğu Microsoft Visual Basic ve Microsoft JScript (ECMA 262 dil belirtimi ile uyumlu) ve Microsoft Visual Basic Scripting Edition (VBScript) gibi betik dilleriyle programlamanızı sağlayan güçlü bir otomasyon nesneleri kümesi sağlar. Shell'in özelliklerine ve iletişim kutularına erişmek için bu nesneleri kullanabilirsiniz. Örneğin, dosya sistemine erişebilir, programları başlatabilir ve sistem ayarlarını değiştirebilirsiniz.

Bu bölümde betiklenebilir Shell nesneleri tanıtılır.

Kabuk Sürümleri

Kabuk nesnelerinin çoğu, Kabuğun sürüm 4.71'de kullanılabilir hale geldi. Diğerleri 5.00 ve sonraki sürümlerde kullanılabilir. Sürüm 5.00, Windows 2000 ile kullanıma sunuldu. Aşağıdaki tabloda, nesnenin kullanılabilir olduğu Shell sürümünün altında her Shell nesnesi listelenir.

Sürüm 4.71 Sürüm 5.00
Klasör DIDiskQuotaUser
FolderItemVerb DiskQuotaControl
FolderItemVerbs klasör2
Kabuk FolderItem
ShellFolderView FolderItems
ShellUIHelper FolderItems2
ShellWindows IShellDispatch2
WebViewFolderContents IShellLinkDual2
ShellFolderItem
ShellFolderViewOC
ShellLinkObject

 

Kabuk Nesnelerini Örnekleme

Visual Basic uygulamalarında Shell nesnelerini erken bağlama ile örneklemek için projenizde aşağıdaki kitaplıklara başvurular ekleyin:

  • Microsoft İnternet Denetimleri (SHDocVw)
  • Microsoft Shell Denetimleri ve Otomasyonu (Shell32)

Geç Bağlama

Ayrıca kabuk nesnelerinin birçoğunu geç bağlama ile de başlatabilirsiniz. Bu yaklaşım Visual Basic uygulamalarında ve betikte çalışır. Aşağıdaki örnekte, JScript'te Shell nesnesinin nasıl örneği gösterildi.

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

Aşağıdaki örnekte, VBScript'te Klasörü nesnesinin nasıl başlatılacağını gösterilmektedir.

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

Yukarıdaki örnekte sDir, Klasör nesnesinin yoludur. ShellSpecialFolderConstants numaralandırma değerlerinin betikte kullanılamadığını unutmayın.

Shell nesnelerinin her biri için ProgID aşağıdaki tabloda gösterilmiştir.

Nesne ProgID
DIDiskQuotaUser Microsoft.DiskQuota.1
DiskQuotaControl Geç bağlanılamıyor
Klasör kabuk. Shell_Application.NameSpace("...")
klasör2 kabuk. Shell_Application.NameSpace("...")
FolderItem kabuk. Shell_Application.NameSpace("..."). Self veya Folder.Items.Item veya Folder.ParseName
FolderItems Folder.Items
FolderItems2 Folder.Items
FolderItemVerb Shell.NameSpace("..."). Self.Verbs.Item()
FolderItemVerbs FolderItem.Verbs veya Shell.NameSpace("..."). Self.Fiiller
IShellDispatch2 kabuk. Shell_Application
IShellLinkDual2 Shell.NameSpace("..."). Self.GetLink veya Shell.NameSpace("..."). Öğeler(). GetLink
Kabuk kabuk. Shell_Application
ShellFolderItem Shell.NameSpace("..."). Self veya Shell.NameSpace("..."). Items()
ShellFolderView Geç bağlanılamıyor
ShellFolderViewOC Geç bağlanılamıyor
ShellLinkObject Shell.NameSpace("..."). Self.GetLink veya Shell.NameSpace("..."). Öğeler(). GetLink
ShellUIHelper Geç bağlanılamıyor
ShellWindows kabuk. Shell_Windows veya ShellWindows._NewEnum
WebViewFolderContents Geç bağlanılamıyor

 

HTML OBJECT Öğesi

Html sayfasında Kabuk nesnelerinin örneğini başlatmak için OBJECT öğesini de kullanabilirsiniz. Bunu yapmak için, OBJECT öğesinin kimliği özniteliğini betiklerinizde kullanacağınız değişken adına ayarlayın ve nesneyi kayıtlı numarasını (CLASSID) kullanarak tanımlayın. Aşağıdaki HTML, OBJECT öğesini kullanarak ShellFolderItem nesnesinin bir örneğini oluşturur.

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

Aşağıdaki tabloda her Shell nesnesi ve ilgili CLASSID'leri listelemektedir.

Kabuk nesnesi CLASSID
DIDiskQuotaUser 7988B571-EC89-11cf-9C00-00AA00A14F56
DiskQuotaControl 7988B571-EC89-11cf-9C00-00AA00A14F56
Klasör BBCBDE60-C3FF-11CE-8350-444553540000
klasör2 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
Kabuk 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

 

Kabuk Nesnesi

Shell nesnesi, Kabuktaki nesneleri temsil eder. Shell nesnesi tarafından kullanıma sunulan yöntemleri kullanarak aşağıdakileri yapabilirsiniz:

  • Klasörleri açın, keşfedin ve göz atın.
  • Açık pencereleri simge durumuna küçültme, geri yükleme, basamaklama veya kutucuk açma.
  • Denetim Masası uygulamalarını başlatın.
  • Sistem iletişim kutularını görüntüle.

Kullanıcılar, Başlat menüsünden ve görev çubuğunun kısayol menüsünden erişdikleri komutları belki de en iyi bilen kişilerdir. Kullanıcılar görev çubuğuna sağ tıkladığında görev çubuğunun kısayol menüsü görüntülenir. Aşağıdaki HTML Uygulaması (HTA), Shell nesnesinin yöntemlerinin çoğunu uygulayan düğmeler içeren bir başlangıç sayfası oluşturur. Bu yöntemlerden bazıları, Başlangıç menüsünde ve görev çubuğunun kısayol menüsünde özellikler uygular.

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

Güvenlik

Bir uygulama olarak HTA, web sayfasından farklı bir güvenlik modeli altında çalışır. Shell nesnelerinin işlevselliğini uygulayan bir web sayfasıyla etkileşime geçmek için kullanıcıların, sayfayı görüntüledikleri güvenlik bölgesi için güvenli olarak işaretlenmemiş ActiveX Denetimlerini başlat ve betikle seçeneğini etkinleştirmeleri gerekir.

Klasör Nesneleri

Klasörü nesnesi bir Shell klasörünü temsil eder. Folder nesnesi tarafından kullanıma sunulan yöntemleri kullanarak aşağıdakileri yapabilirsiniz:

  • Klasör hakkında bilgi edinin.
  • Alt klasörler oluşturun.
  • Dosya nesnelerini kopyalayıp klasöre taşıyın.

FolderItem nesnesi Shell klasöründeki bir öğeyi temsil eder. Özellikleri, öğe hakkındaki bilgileri almanıza olanak tanır. Bir öğenin fiillerini çalıştırmak veya öğenin FolderItemVerbs nesnesi hakkında bilgi almak için bu nesne tarafından kullanıma sunulan yöntemleri kullanabilirsiniz.

FolderItems nesnesi, Shell klasöründeki bir öğe koleksiyonunu temsil eder. Yöntemleri ve özellikleri koleksiyon hakkında bilgi almanıza olanak tanır.

Aşağıdaki Visual Basic örneği, birkaç klasör nesnesi arasındaki ilişkiyi ve bunların birlikte nasıl kullanılabileceğini gösterir. Kullanıcı cmdGetPathadlı komut düğmesine tıkladığında, program kullanıcının Bilgisayarım 'den bir klasör seçmesini sağlayan bir iletişim kutusu görüntüler; burada ssfDRIVES, Bilgisayarım için ShellSpecialFolderConstants numaralandırma değeridir. Kullanıcı bir klasör seçtiğinde, klasörün yolu txtPathadlı metin kutusunda görüntülenir.

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

VBScript'te, ShellSpecialFolderConstants numaralandırma değerleri betikte kullanılamadığından bu işlev biraz farklıdır. Aşağıdaki örnekte, önceki örneğin VBScript eşdeğeri gösterilmektedir.

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

Önceki VBScript örneğinin doğrudan çevirisi olan aşağıdaki JScript örneğinde, '()' boş parantezlerinin Items ve Item yöntemlerini çağırmak için nasıl kullanıldığına dikkat edin.

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