Объекты оболочки, доступные для сценариев
Оболочка Windows предоставляет мощный набор объектов автоматизации, которые позволяют программировать оболочку с помощью Microsoft Visual Basic и языков сценариев, таких как Microsoft JScript (совместим со спецификацией языка ECMA 262) и Microsoft Visual Basic Scripting Edition (VBScript). Эти объекты можно использовать для доступа ко многим функциям и диалоговым окнам оболочки. Например, вы можете получить доступ к файловой системе, запустить программы и изменить параметры системы.
В этом разделе рассматриваются объекты оболочки, доступные для сценариев.
Версии оболочки
Многие объекты оболочки стали доступны в версии 4.71 оболочки. Другие доступны в версии 5.00 и более поздних. Версия 5.00 стала доступна в Windows 2000. В следующей таблице перечислены все объекты Оболочки в версии оболочки, в которой объект стал доступен.
Создание экземпляров объектов оболочки
Чтобы создать экземпляры объектов оболочки в приложениях 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>