Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.16.66.206] |
|
Сообщ.
#1
,
|
|
|
Здесь представленны некоторые недокументированные API функции для вызова диалогов.
Вызывает диалог выключения компьютера Private Declare Function SHShutDownDialog Lib "shell32" Alias "#60" _ (ByVal hOwner As Long) As Long Вызывает диалог перезагрузки компьютера Private Declare Function SHRestartSystem Lib "shell32" Alias "#59" (ByVal hOwner As Long, _ ByVal sPrompt As String, ByVal uFlags As Long) As Long Новые параметры вступят в силу после перезагрузки Строка Prompt вставляется ПЕРЕД стандартной фразой. Парамметр uFlags аналогичен соответствующему параметру функции ExitWindowsEx. Значения флагов можно взять из Api Viewer: EWX_LOGOFF = 0 EWX_SHUTDOWN = 1 EWX_REBOOT = 2 EWX_FORCE = 4 Возвращает vbYes или vbNo в зависимости от нажатой кнопки. hOwner - хэндл родительского окна - в обоих приведенных выше функциях не влияют на положение окна диалога - оно расположено в центре десктопа, а используются для получения сообщения WM_QUIT, которое можно обработать перед выходом. Вызывает диалог "Выполнить" Private Declare Function SHRunDialog 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 - хэндл родителя. hIcon - хэндл иконки, которую можно поместить вместо стандартной (окошко программ с песочными часами) sDir - рабочий каталог, можно передать 0 (об'явив как Long) - тогда каталог, в котором расположена программа. sTitle и sPrompt - соответственно заголовок и подсказка диалога. uFlags - передаваемые параметры Run_NOBROWSE = 1 Убрать кнопку Найти Run_NODEFAULT = 2 Оставить тект бокс чистым. Run_CALCDIRECTORY = 4 Получить рабочую директорию из имени файла Run_NOLABEL = 8 Убирает надпись перед текст боксом. Вызывает диалог выбора иконки (как при смене значка на десктопе) Private Declare Function SHChangeIconDialog Lib "shell32" Alias "#62" (ByVal hOwner As Long, _ ByVal sFilename As String, ByVal nBuf As Long, nIconIndex As Long) As Long Параметры hOwner - хэндл родителя. sFileName - полный путь файла с иконками (должен существовать). Если в указанном файле нет иконок, вызываются иконки Shell32.dll. sFileName должен быть максимальной длинны, например, так sFileName = sFileName & String$(260 - Len(sFileName), 0) nBuf - буфер для имени файла, если имя максимальной длины, то можно передавать 0, если нет - максимальный размер nIconIndex - до выполнения - 0, после выполнения функции возвращает номер иконки в файле. Далее эту иконку можно вытащить с помощью вполне документированной функции ExtractIconEx из той же библиотеки. Функция вызывает диалог "Свойства" Private Declare Function SHObjectProperties Lib "shell32" Alias "#178" (ByVal hOwner As Long, _ ByVal uFlags As Long, ByVal sName As String, ByVal sParam As String) As Long Параметры hOwner - хэндл родителя. uFlags - может принимать два значения - 1 для свойств принтера, 2 - для файла sName - имя принтера или файла. Если вместо имени файла указаны папка или диск, вызывается соответствующее окно свойств. Если указано "" - появляются свойства Системы. sParam - название вкладки на пропертях, которую надо показать. Если предать пустую строку или несуществующую вкладку - будет показана первая вкладка. Важное замечание, автор Super-Vadim В функции "Диалог "Свойства"" параметры имени файла и вкладки, нужно передавать предварительно отъюникодив (в XP точно), а то работать не будет... 'Command1 – кнопка ' - - - - - - 'Код формы Private Declare Function ShowPropertiesObj Lib "shell32" Alias "#178" (ByVal hOwner As Long, ByVal uFlags As Long, ByVal fFileName As String, ByVal fTabName As String) As Long Private Function ShowProperties(ByVal hOwnerForm As Long, ByVal pFileName As String, Optional ByVal pTabName As String = "") As Long pFileName = StrConv(pFileName, vbUnicode) pTabName = StrConv(pTabName, vbUnicode) ShowProperties = ShowPropertiesObj(hOwnerForm, 2, pFileName, pTabName) End Function Private Sub Command1_Click() ShowProperties Form1.hWnd, "C:\file.txt", "общие" '("общие", "сводка" и т.д.) ShowProperties Form1.hWnd, "C:\" ShowProperties Form1.hWnd, "C:\Папка" End Sub |
Сообщ.
#2
,
|
|
|
Способ №2:
Const SEE_MASK_INVOKEIDLIST = &HC Const SEE_MASK_NOCLOSEPROCESS = &H40 Const SEE_MASK_FLAG_NO_UI = &H400 Private Type SHELLEXECUTEINFO cbSize As Long fMask As Long hwnd As Long lpVerb As String lpFile As String lpParameters As String lpDirectory As String nShow As Long hInstApp As Long lpIDList As Long lpClass As String hkeyClass As Long dwHotKey As Long hIcon As Long hProcess As Long End Type Private Declare Function ShellExecuteEx Lib "shell32.dll" Alias "ShellExecuteEx" (SEI As SHELLEXECUTEINFO) As Long Sub ShowProps(FileName As String, OwnerhWnd As Long) Dim SEI As SHELLEXECUTEINFO Dim r As Long With SEI .cbSize = Len(SEI) .fMask = SEE_MASK_NOCLOSEPROCESS Or _ SEE_MASK_INVOKEIDLIST Or SEE_MASK_FLAG_NO_UI .hwnd = OwnerhWnd .lpVerb = "properties" .lpFile = FileName .lpParameters = vbNullChar .lpDirectory = vbNullChar .nShow = 0 .hInstApp = 0 .lpIDList = 0 End With r = ShellExecuteEX(SEI) End Sub Private Sub Form_Load() ShowProps "c:\config.sys", Me.hwnd End Sub |