powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / API-функция выбора каталога
10 сообщений из 10, страница 1 из 1
API-функция выбора каталога
    #32156436
Фотография wara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая API-функция windows позволяет выбрать каталог (через интерфейс windows) и возвратить его название?
...
Рейтинг: 0 / 0
API-функция выбора каталога
    #32156474
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShBrowseForFolder - вроде так.
Только у меня в свое время не получилось ей задать начальный каталог.
...
Рейтинг: 0 / 0
API-функция выбора каталога
    #32156476
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вот длинный кусок кода:\r
\r
/topic/24696\r
\r
Правда, там речь шла о выборе файла, но возможно, что и для каталога удастся приспособить.
...
Рейтинг: 0 / 0
API-функция выбора каталога
    #32156503
Фотография wara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,
Спасибо, с той, что выбирает файл я умею работать. А нет ли такой, что выбирает каталог?
...
Рейтинг: 0 / 0
API-функция выбора каталога
    #32156505
Фотография wara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох Позорный
Благодарю, после праздников попробую с ней поковыряться...
...
Рейтинг: 0 / 0
API-функция выбора каталога
    #32156513
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По моему, с помощью этой функции можно все что угодно выбрать, хоть сетевой принтер. Окошко убогое вылазит, скажем, создать новую папку нельзя из этого окна. Есть какие-то более современные механизмы, но я с ними не знаком.
...
Рейтинг: 0 / 0
API-функция выбора каталога
    #32156559
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
Type BROWSEINFO
    hOwner       As Long
    pidlRoot     As Long
    pszDisplayName As String
    lpszTitle    As String
    ulFlags      As Long
    lpfn         As Long
    lParam       As Long
    iImage       As Long
End Type
Public Declare Function SHBrowseForFolder Lib  "shell32"  Alias  "SHBrowseForFolderA"  
(lpBrowseInfo As BROWSEINFO) As Long

Public Declare Function SHGetPathFromIDList Lib  "shell32"  
Alias  "SHGetPathFromIDListA"  (ByVal pidl As Long, ByVal pszPath As String) As Long

Public Function DialogVyboraPapok(Optional НуженЛиСлэшВКонцеИмениПапки As Boolean = False) As String
    Dim aaa      As BROWSEINFO
    Dim A        As Long
    Dim str      As String * MAX_PATH
    Dim s        As String
    '// Browsing for directory.
    '#define BIF_RETURNONLYFSDIRS   0x0001  // For finding a folder to start document searching
    '#define BIF_DONTGOBELOWDOMAIN  0x0002  // For starting the Find Computer
    '#define BIF_STATUSTEXT         0x0004
    '#define BIF_RETURNFSANCESTORS  0x0008
    '#define BIF_EDITBOX            0x0010
    '#define BIF_VALIDATE           0x0020   // insist on valid result (or CANCEL)

    '#define BIF_BROWSEFORCOMPUTER  0x1000  // Browsing for Computers.
    '#define BIF_BROWSEFORPRINTER   0x2000  // Browsing for Printers
    '#define BIF_BROWSEINCLUDEFILES 0x4000  // Browsing for Everything
    aaa.hOwner = hWndAccessApp
    aaa.lpszTitle =  "Выбери папку для сохранения самой программы и ее данных. К именам будет добавлена сегодняшняя дата" 
    aaa.pszDisplayName = String$(MAX_PATH, Chr( 0 ))    ' Только имя папки
    aaa.ulFlags = 1
    A = SHBrowseForFolder(aaa)
    SHGetPathFromIDList A, str    ' Получение полного имени папки с путем с помощью pidl

    ''Debug.Print ClearNullSymbols(str), aaa.pszDisplayName
    s = ClearNullSymbols(str) ' убираем нуль-символы
    If НуженЛиСлэшВКонцеИмениПапки = True Then
        If Right(s, 1) = "/" Or Right(s, 1) = "\" Then
            DialogVyboraPapok = s    'не надо добвлять слэш - уже есть (((**например у дисков
        Else
            DialogVyboraPapok = s &  "\"     ' надо добавить слэш
        End If
    Else
        DialogVyboraPapok = s
    End If



End Function


...
Рейтинг: 0 / 0
API-функция выбора каталога
    #32156987
Фотография wara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем большое спасибо.
...
Рейтинг: 0 / 0
API-функция выбора каталога
    #32157590
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Лох Позорный
Только у меня в свое время не получилось ей задать начальный каталог.

А теперь получилось? =) хотелось бы поглядеть
...
Рейтинг: 0 / 0
API-функция выбора каталога
    #32157604
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да нет, так и забил на это дело.
Единтсвенная проблема была в том, что надо список объектов "шытемид" (ShItemID) преобразовать в нормальный путь и обратно.
Шытемиды в путь преобразуются с помощью функции SHGetPathFromIDList, для обратной задачи (из начального пути получить шытемиды) тоже что-то было, но не работало. Или я не смог заставить заработать. Давно это было, молодой и зеленый был, вторую неделю всего программировал. Так что может и нет там особых проблем, хз в общем.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / API-функция выбора каталога
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]