Поделиться через


Объекты оболочки, доступные для сценариев

Оболочка Windows предоставляет мощный набор объектов автоматизации, которые позволяют программировать оболочку с помощью Microsoft Visual Basic и языков сценариев, таких как Microsoft JScript (совместим со спецификацией языка ECMA 262) и Microsoft Visual Basic Scripting Edition (VBScript). Эти объекты можно использовать для доступа ко многим функциям и диалоговым окнам оболочки. Например, вы можете получить доступ к файловой системе, запустить программы и изменить параметры системы.

В этом разделе рассматриваются объекты оболочки, доступные для сценариев.

Версии оболочки

Многие объекты оболочки стали доступны в версии 4.71 оболочки. Другие доступны в версии 5.00 и более поздних. Версия 5.00 стала доступна в Windows 2000. В следующей таблице перечислены все объекты Оболочки в версии оболочки, в которой объект стал доступен.

Версия 4.71 Версия 5.00
Папка DIDiskQuotaUser
FolderItemVerb DiskQuotaControl
FolderItemVerbs Папка 2
Оболочка FolderItem
ShellFolderView FolderItems
ShellUIHelper FolderItems2
ОболочкаWindows IShellDispatch2
WebViewFolderContents IShellLinkDual2
ShellFolderItem
ShellFolderViewOC
ShellLinkObject

 

Создание экземпляров объектов оболочки

Чтобы создать экземпляры объектов оболочки в приложениях Visual Basic с ранней привязкой, добавьте в проект ссылки на следующие библиотеки:

  • Microsoft Internet Controls (SHDocVw)
  • Элементы управления и автоматизация Microsoft Shell (Shell32)

Поздняя привязка

Можно также создать экземпляры многих объектов оболочки с поздней привязкой. Этот подход работает в приложениях Visual Basic и в скрипте. В следующем примере показано, как создать экземпляр объекта Shell в JScript.

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

В следующем примере показано, как создать экземпляр объекта Folder в 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>

В предыдущем примере sDir — это путь к объекту Folder . Обратите внимание, что значения перечисления ShellSpecialFolderConstants недоступны в скрипте.

Идентификатор ProgID для каждого объекта оболочки показан в следующей таблице.

Объект ProgID:
DIDiskQuotaUser Microsoft.DiskQuota.1
DiskQuotaControl Не удается выполнить позднюю привязку
Папка Оболочки. Shell_Application.NameSpace("...")
Папка 2 Оболочки. Shell_Application.NameSpace("...")
FolderItem Оболочки. Shell_Application.NameSpace("..."). Self или Folder.Items.Item или Folder.ParseName
FolderItems Folder.Items
FolderItems2 Folder.Items
FolderItemVerb Shell.NameSpace("..."). Self.Verbs.Item()
FolderItemVerbs FolderItem.Verbs или Shell.NameSpace("..."). Self.Verbs
IShellDispatch2 Оболочки. Shell_Application
IShellLinkDual2 Shell.NameSpace("..."). Self.GetLink или Shell.NameSpace("..."). Items(). GetLink
Оболочка Оболочки. Shell_Application
ShellFolderItem Shell.NameSpace("..."). Self или Shell.NameSpace("..."). Items()
ShellFolderView Не удается выполнить позднюю привязку
ShellFolderViewOC Не удается выполнить позднюю привязку
ShellLinkObject Shell.NameSpace("..."). Self.GetLink или Shell.NameSpace("..."). Items(). GetLink
ShellUIHelper Не удается выполнить позднюю привязку
ОболочкаWindows Оболочки. Shell_Windows или ShellWindows._NewEnum
WebViewFolderContents Не удается выполнить позднюю привязку

 

ЭЛЕМЕНТ HTML OBJECT

Элемент OBJECT также можно использовать для создания экземпляров объектов оболочки на HTML-странице. Для этого задайте для атрибута ID элемента OBJECT имя переменной, которую вы будете использовать в скриптах, и идентифицируйте объект, используя его зарегистрированный номер (CLASSID). Следующий HTML-код создает экземпляр объекта ShellFolderItem с помощью элемента OBJECT .

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

В следующей таблице перечислены каждый объект оболочки и соответствующий класс CLASSID.

Объект оболочки CLASSID
DIDiskQuotaUser 7988B571-EC89-11cf-9C00-00AA00A14F56
DiskQuotaControl 7988B571-EC89-11cf-9C00-00AA00A14F56
Папка BBCBDE60-C3FF-11CE-8350-444553540000
Папка2 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
Оболочка 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 представляет объекты в оболочке. Методы, предоставляемые объектом Shell, можно использовать для:

  • Открывайте, просматривайте и просматривайте папки.
  • Свертывание, восстановление, каскадные окна или открытые плитки.
  • Запуск панель управления приложений.
  • Отображение системных диалоговых окон.

Пользователи, возможно, больше всего знакомы с командами, к которым они обращаются из меню "Пуск" и контекстного меню панели задач. Контекстное меню панели задач отображается, когда пользователи щелкают панель задач правой кнопкой мыши. Следующее приложение HTML (HTA) создает начальную страницу с кнопками, реализующими многие методы объекта Оболочки . Некоторые из этих методов реализуют функции в меню "Пуск" и контекстном меню панели задач.

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

Безопасность

В качестве приложения HTA выполняется в модели безопасности, отличной от модели веб-страницы. Чтобы взаимодействовать с веб-страницей, которая реализует функциональные возможности объектов оболочки, пользователи должны включить параметр Инициализировать элементы ActiveX, не помеченные как безопасные , для зоны безопасности, в которой они просматривают страницу.

Объекты папки

Объект Folder представляет папку оболочки. Методы, предоставляемые объектом Folder, можно использовать для:

  • Получение сведений о папке.
  • Создание вложенных папок.
  • Скопируйте и переместите объекты файлов в папку .

Объект FolderItem представляет элемент в папке оболочки. Его свойства позволяют получать сведения об элементе. Методы, предоставляемые этим объектом, можно использовать для выполнения команд элемента или для получения сведений об объекте FolderItemVerbs элемента.

Объект FolderItems представляет коллекцию элементов в папке оболочки. Его методы и свойства позволяют получать сведения о коллекции.

В следующем примере Visual Basic показана связь между несколькими объектами папок и их совместное использование. Когда пользователь нажимает кнопку с именем cmdGetPath, программа отображает диалоговое окно, позволяющее пользователю выбрать папку на странице Мой компьютер, где ssfDRIVES — это значение перечисления ShellSpecialFolderConstants для параметра Мой компьютер. Когда пользователь выбирает папку, путь к ней отображается в текстовом поле 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

В VBScript эта функция немного отличается, так как значения перечисления ShellSpecialFolderConstants недоступны в скрипте. В следующем примере показан эквивалент VBScript предыдущего примера.

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

В следующем примере JScript, который является прямым переводом предыдущего примера VBScript, обратите внимание, как пустые круглые скобки "()" используются для вызова методов Items и 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>