Страница: 1 |
И снова спасибо за помощь Можно ли, используя стандартные объекты и методы, найти определенную директорию (или файл). Если нет, то что необходимо использовать? Необходимо создать ярлыки для компонентов ActiveX: Панели управления, Удаленного доступа к сети и т. д. Как можно это сделать? Еще раз спасибо
Если тебе надо только проверить, есть ли определенный файл в определенной директории, то можно поюзать АПИ в General | Declarations Private Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long в программе If PathFileExists("c:\WINDOWS\win.com") = 0 Then msgbox"И как у тебя 98 Винда грузится? :o)" End If Лови еще рекурсивный поиск. Писал не я, я только немного под свои нужды подточил Option Explicit Private Const INVALID_HANDLE_VALUE = -1 Private Type FILETIME Private Type WIN32_FIND_DATA Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long Private StopSearch As Boolean Private Sub SearchForFiles(fName As String, Path As String) Private Sub SearchForFolders(fName As String, Path As String, File As String) Private Function TrimNull(Start As String) As String Private Sub cmdFind_Click() StopSearch = False Dim tmp As String End Sub Private Sub cmdStop_Click() ----------------------------------------------------------- Код полностью готов, только надо подтереть некоторые недоговоренности. Извини, но ты действительно плохо читаешь код! Функция поиска каталогов - рекурсивна!!! Поэтому все будет так как ты хотел(хотя я не проверял, но почему-то Хоббиту я верю), а именно поиск в директориях, поддиректориях и т.п. вобщем это чистейшей воды "поиск в глубину". Юзай! Юзай-юзай... Просто добавь на форму контролы, переименуй их и, в режиме редактирования кода, просто вставь код из браузера. В принципе, я так задумывал... Это код рекурсивного поиска (задаешь диск в ДрайвБоксе, жмешь Финд :о) и он тебе находит все нуужные файлы) Страница: 1 |
Вопрос: И еще парачка...
Добавлено: 16.06.02 04:53
Автор вопроса: frog
Ответы
Всего ответов: 12
Номер ответа: 1
Автор ответа:
XobbuT
ICQ: 177633964
Вопросов: 5
Ответов: 42
Профиль | | #1
Добавлено: 16.06.02 15:29
Номер ответа: 2
Автор ответа:
XobbuT
ICQ: 177633964
Вопросов: 5
Ответов: 42
Профиль | | #2
Добавлено: 16.06.02 16:14
Private Const FILE_ATTRIBUTE_DIRECTORY = &H10
Private Const MAX_PATH = 260
dwLowDateTime As Long
dwHighDateTime As Long
End Type
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
'поиск файлов
If StopSearch = True Then Exit Sub
Dim Atr As Integer
Dim hFnd As Long
Dim WFD As WIN32_FIND_DATA
hFnd = FindFirstFile(Path & fName, WFD)
If hFnd = INVALID_HANDLE_VALUE Then Exit Sub
Do
Atr = (WFD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY)
If TrimNull(WFD.cFileName) <> "." And TrimNull(WFD.cFileName) <> ".." Then
If Atr > 0 Then
lstFiles.AddItem "[" & Path & TrimNull(WFD.cFileName) & "]"
Else
lstFiles.AddItem Path & TrimNull(WFD.cFileName)
End If
End If
Label1.Caption = "Finded " & lstFiles.ListCount & " music files. Please wait..."
Loop While FindNextFile(hFnd, WFD)
FindClose hFnd
End Sub
'поиск каталогов
If StopSearch = True Then Exit Sub
Dim Atr As Integer
Dim hFnd As Long
Dim WFD As WIN32_FIND_DATA
hFnd = FindFirstFile(Path & fName, WFD)
If hFnd = INVALID_HANDLE_VALUE Then Exit Sub
SearchForFiles File, Path
Do
Atr = (WFD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY)
If TrimNull(WFD.cFileName) <> "." And TrimNull(WFD.cFileName) <> ".." Then
If Atr > 0 Then
DoEvents
SearchForFolders fName, Path & TrimNull(WFD.cFileName) & "\", File
End If
End If
Loop While FindNextFile(hFnd, WFD)
FindClose hFnd
End Sub
Dim Pos As Integer
Pos = InStr(Start, Chr$(0))
If Pos Then
TrimNull = Left$(Start, Pos - 1)
Exit Function
End If
TrimNull = Start
End Function
Dim DriveName As String * 2
DriveName = Drive1.Drive
lstFiles.Clear
Screen.MousePointer = 13
lstFiles.Enabled = False
SearchForFolders "*", DriveName & "\", Combo1.Text & vbNullString
Label1.Caption = "Finded " & lstFiles.ListCount & " music files."
lstFiles.Enabled = True
Screen.MousePointer = 0
StopSearch = True
End Sub
Тебе надо будет:
cmdFind, cmdStop - 2 кнопки
lstFiles - ЛистБокс
Drive1 - ДрайвБокс
Combo1 - КомбоБокс
Label1 - ну, ты меня понял :о)
Номер ответа: 3
Автор ответа:
frog
Вопросов: 4
Ответов: 4
Профиль | | #3
Добавлено: 18.06.02 03:59
Я плохо читаю код, но эта штука, по-моему, предназначена для поиска определенных файлов в определенной директории. Можно ли поискать файл по всем директориям, поддиректориям, поддиректориям поддириректорий?....
Номер ответа: 4
Автор ответа:
SAVok
ICQ: 155153916
Вопросов: 2
Ответов: 126
Профиль | | #4
Добавлено: 18.06.02 14:49
Номер ответа: 5
Автор ответа:
XobbuT
ICQ: 177633964
Вопросов: 5
Ответов: 42
Профиль | | #5
Добавлено: 18.06.02 22:48
Номер ответа: 6
Автор ответа:
Millenium
ICQ: 629966
Вопросов: 118
Ответов: 903
Web-сайт:
Профиль | | #6
Добавлено: 18.07.07 17:41
В примерах капался? Да там навалом готовых и рабочих!
Номер ответа: 7
Автор ответа:
User Unknown
Вечный Юзер!
ICQ: uu@jabber.cz
Вопросов: 120
Ответов: 3302
Профиль | | #7
Добавлено: 18.07.07 17:59
Щас кто-то по башке получит.
Номер ответа: 8
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #8
Добавлено: 19.07.07 01:11
Prepare to fight!
Номер ответа: 9
Автор ответа:
SAVok
ICQ: 155153916
Вопросов: 2
Ответов: 126
Профиль | | #9
Добавлено: 19.07.07 08:08
Какая встреча! Рад всех видеть!
Номер ответа: 10
Автор ответа:
User Unknown
Вечный Юзер!
ICQ: uu@jabber.cz
Вопросов: 120
Ответов: 3302
Профиль | | #10
Добавлено: 19.07.07 09:54
SAV, у нас с тобой аськи по маске похожи:
156753018
155153916
15??53?1?
Номер ответа: 11
Автор ответа:
SAVok
ICQ: 155153916
Вопросов: 2
Ответов: 126
Профиль | | #11
Добавлено: 19.07.07 12:20
>>SAV, у нас с тобой аськи по маске похожи
Real Programmer
Как людям в голову такие весчи приходят?
Неудивлюсь если у нас даты раждения отличаются на фиксированный сдвиг
Номер ответа: 12
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #12
Добавлено: 19.07.07 14:58
Сегодня что, день археолога?