Сообщений 4    Оценка 30 [+3/-0]         Оценить  
Система Orphus

Объект Shell

Автор: А. Климов
Русский проект: Visual Basic на русском
Опубликовано: 30.05.2002
Исправлено: 13.03.2005
Версия текста: 1.1

Версия Shell
Доступ к объекту Shell
Раннее связывание
Позднее связывание
HTML-элемент OBJECT
Объект Shell
Эпилог

Демонстрационный пример (Visual Basic) - 2

Объект Microsoft Windows Shell позволяет получить доступ к различным настройкам Windows при помощи технологий COM и Automation, что позволяет использовать Visual Basic и VBScript. Например, вы можете получить доступ к различным диалоговым окнам, к файловой системе, запускать программы и изменять системные настройки. Итак, знакомимся с объектом Shell.

Версия Shell

Многие из объектов оболочки Shell доступны начиная с версии 4.71, но существуют и объекты доступные только в версии 5.00 и выше. Версия 4.71 установлена на компьютерах с Windows 98, а версия 5.00 на Windows 2000. Ниже приводится список доступных объектов для каждой версии (версия 5.0 поддерживает все объекты версии 4.71).

Версия 4.71Версия 5.00
Folder DIDiskQuotaUser
FolderItemVerb DiskQuotaControl
FolderItemVerbs Folder2
Shell FolderItem
ShellFolderView FolderItems
ShellUIHelper FolderItems2
ShellWindows IShellDispatch2
WebViewFolderContents IShellLinkDual2
ShellFolderItem
ShellFolderViewOC
ShellLinkObject

Доступ к объекту Shell

Раннее связывание

Получить доступ к объекту Shell в Visual Basic можно при помощи раннего связывания, добавив ссылку к библиотекам:

Откроем проект в Visual Basic. Добавим ссылки к библиотекам и пишем следующий код для кнопки Command1

Dim o As New Shell
 o.MinimizeAll
 Set o = Nothing

Данный пример сворачивает все открытые окна

Позднее связывание

Также можно получить доступ к объектам Shell при помощи позднего связывания. Этот способ используется в скриптовых языках.

Приведем пример использования объекта Shell в VBScript.

<SCRIPT LANGUAGE="VBScript">
<!--

  function fnMinimizeAll()

    dim oShell    
    
    set oShell = CreateObject("Shell.Application")
    oShell.MinimizeAll  
    
  end function
  
-->
</SCRIPT>


Аналогично работает этот код и в Visual Basic

Примечание: Не все объекты Shell доступны при помощи позднего связывания. Вот список недоступных объектов

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

HTML-элемент OBJECT

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

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

Список объектов Shell и их CLASSID

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

Объект Shell является очень мощным оружием программиста для доступа ко многим возможностям Windows Shell. Вы сможете:

Приведем пример использования многих методов объектов Shell на Visual Basic

Откройте проект, установите ссылки на библиотеки, добавьте на форму элемент ListBox

Private Sub Form_Load()
List1.AddItem "Свернуть все окна"
List1.AddItem "Окно Запуск программы"
List1.AddItem "Окно закрытия Windows"
List1.AddItem "Окно Найти файлы"
List1.AddItem "Системное время"
List1.AddItem "Свойства экрана"
List1.AddItem "Свойства панели задач"
List1.AddItem "Окна каскадом"
End Sub

Private Sub List1_Click()
Dim o As New Shell
Select Case List1.ListIndex
 Case 0
  o.MinimizeAll
 Case 1
  o.FileRun
 Case 2
  o.ShutdownWindows
 Case 3
  o.FindFiles
 Case 4
  o.SetTime
 Case 5
  o.ControlPanelItem "desk.cpl"
 Case 6
  o.TrayProperties
 Case 7
  o.CascadeWindows
End Select
Set o = Nothing

End Sub

Теперь примеры при помощи HTML.

<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.MinimizeAll
      case 1  
          'Displays the Run dialog box
        oShell.FileRun
      case 2  
          'Displays the Shut Down Windows dialog box
        oShell.ShutdownWindows
      case 3  
          'Displays the Find dialog box
        oShell.FindFiles
      case 4  
          'Displays the Date/Time dialog box
        oShell.SetTime 
      case 5  
          'Displays the Internet Properties dialog box
        oShell.ControlPanelItem "INETCPL.cpl"
      case 6  
          'Explores the My Documents folder
        oShell.Explore "C:\My Documents"
      case 7  
          'Enables user to select folder from Program Files
        oShell.BrowseForFolder 0, "My Programs", 0, "C:\Program Files" 
      case 8  
          'Opens the Favorites folder
        oShell.Open "C:\WINDOWS\Favorites"
      case 9  
          'Displays the Taskbar Properties dialog box
        oShell.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>
ПРИМЕЧАНИЕ

В case 6 и case 8 использовались пути (имена папок) для английской версии Windows98. В случае необходимости используйте константы ShellSpecialFolderConstants, позволяющие получить реальные пути к системным каталогам.

Эпилог

Данная статья предоставляет лишь краткий обзор богатых возможностей, предоставляемых объектом Shell. Читайте MSDN, где достаточно подробно описана документация по Shell. Также, в Visual Basic вы можете просмотреть свойства, методы и объекты, предоставляемые Shell при помощи Object Browser (View-Object Browser или F2). Напоследок, приведу пример вызова диалогового окна Добавление в избранное


Dim suih As New ShellUIHelper
Dim mysite As String
mysite = "http://rsdn.ru/"
suih.AddFavorite mysite, "RSDN"

Удачного вам программирования!


Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.
    Сообщений 4    Оценка 30 [+3/-0]         Оценить