Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / API-функция выбора каталога / 10 сообщений из 10, страница 1 из 1
08.05.2003, 18:27
    #32156436
wara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API-функция выбора каталога
Какая API-функция windows позволяет выбрать каталог (через интерфейс windows) и возвратить его название?
...
Рейтинг: 0 / 0
08.05.2003, 19:30
    #32156474
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API-функция выбора каталога
ShBrowseForFolder - вроде так.
Только у меня в свое время не получилось ей задать начальный каталог.
...
Рейтинг: 0 / 0
08.05.2003, 19:34
    #32156476
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API-функция выбора каталога
Вот длинный кусок кода:\r
\r
/topic/24696\r
\r
Правда, там речь шла о выборе файла, но возможно, что и для каталога удастся приспособить.
...
Рейтинг: 0 / 0
08.05.2003, 21:20
    #32156503
wara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API-функция выбора каталога
Владимир Саныч,
Спасибо, с той, что выбирает файл я умею работать. А нет ли такой, что выбирает каталог?
...
Рейтинг: 0 / 0
08.05.2003, 21:22
    #32156505
wara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API-функция выбора каталога
Лох Позорный
Благодарю, после праздников попробую с ней поковыряться...
...
Рейтинг: 0 / 0
08.05.2003, 21:50
    #32156513
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API-функция выбора каталога
По моему, с помощью этой функции можно все что угодно выбрать, хоть сетевой принтер. Окошко убогое вылазит, скажем, создать новую папку нельзя из этого окна. Есть какие-то более современные механизмы, но я с ними не знаком.
...
Рейтинг: 0 / 0
09.05.2003, 09:46
    #32156559
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API-функция выбора каталога
Код: 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
11.05.2003, 13:48
    #32156987
wara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API-функция выбора каталога
Всем большое спасибо.
...
Рейтинг: 0 / 0
12.05.2003, 15:07
    #32157590
наутилус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
API-функция выбора каталога
2 Лох Позорный
Только у меня в свое время не получилось ей задать начальный каталог.

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


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