Описание некоторых стандартных и часто используемых диалоговых окон библиотеки Shell32.dll.
Библиотека Shell32.dll предоставляет довольно много стандартных диалоговых окон (Выполнить, Завершение работы, Поиск файлов...). Так как документацию не то что на использование функции, но и на её объявление очень трудно найти, в этой статье речь пойдёт лишь о нескольких, самых часто использумых диалоговых окнах. Почти все функции вызова диалоговых окон Shell32.dll нумеруются, т.е. у них нет полного названия (напрмер, #69). Благодаря ключевому слову Alias в Visual Basic'е можно назначить свои, легкочитаемые названия функций (так я и сделал).
Выполнить.
Диалоговое окно для запуска приложения, открытия документа или Интернет ресурса.
Declare Function ShellRunDlg Lib "Shell32" Alias "#61" (ByVal hOwner As Long, ByVal hIcon As Long, ByVal sDir As String, ByVal sTitle As String, ByVal sPrompt As String, ByVal uFlags As Long) As Long
hOwner - дескриптор окна владельца. nIcon - иконка окна. sDir - директория по умолчанию. sTitle - заголовок (название) окна. sPromt - текст подсказки. uFlags - комбинация из следующих констант: SRD_NOBROWSE = 1 (убирает кнопку "Обзор"), SRD_NODIR = 2 (текстовое поле "Путь" будет пустым), SRD_NOCOMBOTEXT = 8 (перед текстовым полем "Путь" будет отсутствовать надпись "Открыть").
Завершение Работы.
Диалоговое окно для завершения работы компьютера или его перезагрузки.
Declare Function ShellShutDownDlg Lib "Shell32" Alias "#60" (ByVal hOwner As Long) As Long
hOwner - дескриптор окна владельца.
Перезагрузка Компютера.
После установки какой нибудь программы вам часто встречается сообщение, что перед запуском программы необходимо перезагрузить компьютер, вот это диалоговое окно.
Declare Function ShellRestartComputerDlg Lib "Shell32" Alias "#59" (ByVal hOwner As Long, ByVal sPrompt As String, ByVal uFlags As Long) As Long
hOwner - дескриптор окна владельца. sPromt - текст подсказки. uFlags - одна из констант функции ExitWindowsEx
Смена Иконки.
Диалоговое окно для смены иконки, как при изменении иконки ярлыка.
Declare Function ShellChangeIconDlg Lib "Shell32" Alias "#62" (ByVal hOwner As Long, ByVal sFilename As String, ByVal nBuf As Long, nIconIndex As Long) As Long
hOwner - дескриптор окна владельца. sFileName - имя файла ресурса (мало исследованный мною параметр, возможны некоторые нюансы в его использовании.) nBuf - буфер имени файла (относится к предыдущему параметру, я использую значение 0) nIconIndex - номер иконки, которая будет выделена при показе диалогового окна. После закрытия окна в этот параметр будет передан номер иконки, который выбрал пользователь.
Свойства Объекта.
Диалоговое окно свойств файла, папки, принтера или системы.
Declare Function ShellPropertiesDlg Lib "Shell32" Alias "#178" (ByVal hOwner As Long, ByVal uFlags As Long, ByVal sName As String, ByVal sParam As String) As Long
hOwner - дескриптор окна владельца. uFlags - одна из следующих констант: SOP_PRINTER = 1 (диалог свойств принтера), SOP_FILESYSTEM = 2 (диалог свойств файла, папки или системы). sName - имя файла, папки или принтера (пустая строка, если надо показать окно свойств системы).
Форматирование.
Диалог форматирования диска
Declare Function SHFormatDrive Lib "Shell32" (ByVal hOwner As Long, ByVal iDrive As Long, ByVal iCapacity As Long, ByVal iFormatType As Long) As Long
hOwner - дескриптор окна владельца. iDrive - имя дисковода (a,b...). iCapacity - вместимость накопителя, 0 - по умолчанию. iFormatType - одна из следующих констант: SFD_FAST (быстрое форматирование), SFD_FULL (полное форматирование).
Вот все, пока, мне известные диалоговые окна. Исходник, демонстрирующий работу с этими окнами, можно скачать здесь.