powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / SHFileExists
11 сообщений из 11, страница 1 из 1
SHFileExists
    #34672219
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток. Итак, SHFileExists. Мне нужно знать, существует ли файл или папка. Причем заранее не известно что это (файл или папка). Вроде как эта функция для этого и предназначена, но не работает. Я понимаю, что нефиг использовать недокументированные функции, но все же может кто, что подскажет?
...
Рейтинг: 0 / 0
SHFileExists
    #34672320
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так устроит?:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Public Sub Main()
    Dim s As String, b As Boolean, bb As Boolean

    s = "C:\Program Files\Microsoft Visual Studio\VB98\"
    b = FFExists(s, bb)
    Debug.Print IIf(b, IIf(bb, "Folder", "File  "), "------"), b, s
    
    s = s & "vb6.exe"
    b = FFExists(s, bb)
    Debug.Print IIf(b, IIf(bb, "Folder", "File  "), "------"), b, s

    s = s & "_"
    b = FFExists(s, bb)
    Debug.Print IIf(b, IIf(bb, "Folder", "File  "), "------"), b, s

End Sub

Private Function FFExists(sFile As String, IsDirectory As Boolean) As Boolean
    On Error Resume Next
    IsDirectory = ((GetAttr(sFile) And vbDirectory))
    If Err.Number Then Err.Clear Else FFExists = True
End Function
...
Рейтинг: 0 / 0
SHFileExists
    #34672328
Фотография IguMEN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Формулировка, конечно, не ахти, и слово "пожалуйста" в принципе не используется, но то что нужно я, все-таки, напишу:

Код: plaintext
1.
2.
3.
4.
Public Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long

if pathfileexists ("c:\windows\explorer.exe")= 0  then msgbox "Нет эксплорера"
if pathfileexists ("c:\windows\explorer.exe")= 1  then msgbox "Есть эксплорер"
...
Рейтинг: 0 / 0
SHFileExists
    #34672332
Фотография IguMEN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗЫ: Спапками аналогично
...
Рейтинг: 0 / 0
SHFileExists
    #34672505
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТак устроит? Нет. Мне не надо знать что это, мне надо знать есть ли это.
PathFileExists - как вариант конечно устраивает, как и обычная Dir.
Вопрос был про SHFileExists , кто нибудь юзал?
...
Рейтинг: 0 / 0
SHFileExists
    #34672565
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreyMp авторТак устроит? Нет. Мне не надо знать что это, мне надо знать есть ли это.

Ну, вообще-то там делается то и другое.

AndreyMp
PathFileExists - как вариант конечно устраивает, как и обычная Dir.
Вопрос был про SHFileExists , кто нибудь юзал?

Если не документировано, то лучше не использовать.
Особенно когда нет никакой явной необходимости.
...
Рейтинг: 0 / 0
SHFileExists
    #34672578
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreyMpкак и обычная Dir.

Обычная Dir не будет работать в каталогах в которых запрещен листинг файлов.
Так что ее использование для данной цели не есть хорошо.
...
Рейтинг: 0 / 0
SHFileExists
    #34672629
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrFОсобенно когда нет никакой явной необходимости.Да, скорее это спортивный интерес.
Просто я в маленькой проге использую только SH-функции, в частности SHFileOperation , SHBrowseForFolder , SHGetPathFromIDList . Хотелось вот и для проверки наличия файла/папки использовать тоже SH-функцию, но даже пример из уважаемого API-Guide не работает. Что ж.
...
Рейтинг: 0 / 0
SHFileExists
    #34673839
Фотография PA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На NT системах надо в SHFileExists юникодовую строку передавать. Пример:
Код: plaintext
If CBool(SHFileExists(StrConv(FilePath, vbUnicode))) Then ...
...
Рейтинг: 0 / 0
SHFileExists
    #34673888
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PAНа NT системах надо в SHFileExists юникодовую строку передавать.Во! Никогда бы не подумал. Обязательно попробую. Сенкс РА А с чем с чем связано сие извращение?
...
Рейтинг: 0 / 0
SHFileExists
    #34673962
Фотография PA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreyMp PAНа NT системах надо в SHFileExists юникодовую строку передавать.Во! Никогда бы не подумал. Обязательно попробую. Сенкс РА А с чем с чем связано сие извращение?
С тем, что Windows NT API использует набор символов Unicode
, а Windows 9x API - ANSI
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / SHFileExists
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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