На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: SCINER, B.V.
  
    > Стандартные диалоги Windows , Недокументированные API функции
      Здесь представленны некоторые недокументированные API функции для вызова диалогов.

      Вызывает диалог выключения компьютера

      ExpandedWrap disabled
        Private Declare Function SHShutDownDialog Lib "shell32" Alias "#60" _
        (ByVal hOwner As Long) As Long


      Вызывает диалог перезагрузки компьютера

      ExpandedWrap disabled
        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, которое можно обработать перед выходом.

      Вызывает диалог "Выполнить"

      ExpandedWrap disabled
        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 Убирает надпись перед текст боксом.

      Вызывает диалог выбора иконки (как при смене значка на десктопе)

      ExpandedWrap disabled
        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 должен быть максимальной длинны, например, так
      ExpandedWrap disabled
        sFileName = sFileName & String$(260 - Len(sFileName), 0)

      nBuf - буфер для имени файла, если имя максимальной длины, то можно передавать 0, если нет - максимальный размер
      nIconIndex - до выполнения - 0, после выполнения функции возвращает номер иконки в файле. Далее эту иконку можно вытащить с помощью вполне документированной функции ExtractIconEx из той же библиотеки.

      Функция вызывает диалог "Свойства"

      ExpandedWrap disabled
        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 точно), а то работать не будет...
      ExpandedWrap disabled
        '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:

        ExpandedWrap disabled
             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
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0686 ]   [ 17 queries used ]   [ Generated: 25.04.24, 02:14 GMT ]