Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: И еще парачка... Добавлено: 16.06.02 04:53  

Автор вопроса:  frog

И снова спасибо за помощь

Можно ли, используя стандартные объекты и методы, найти определенную директорию (или файл). Если нет, то что необходимо использовать?

Необходимо создать ярлыки для компонентов ActiveX: Панели управления, Удаленного доступа к сети и т. д. Как можно это сделать?

Еще раз спасибо

Ответить

  Ответы Всего ответов: 12  

Номер ответа: 1
Автор ответа:
 XobbuT



ICQ: 177633964 

Вопросов: 5
Ответов: 42
 Профиль | | #1 Добавлено: 16.06.02 15:29

Если тебе надо только проверить, есть ли определенный файл в определенной директории, то можно поюзать АПИ

в 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

Ответить

Номер ответа: 2
Автор ответа:
 XobbuT



ICQ: 177633964 

Вопросов: 5
Ответов: 42
 Профиль | | #2 Добавлено: 16.06.02 16:14

Лови еще рекурсивный поиск.

Писал не я, я только немного под свои нужды подточил

Option Explicit

Private Const INVALID_HANDLE_VALUE = -1
Private Const FILE_ATTRIBUTE_DIRECTORY = &H10
Private Const MAX_PATH = 260

Private Type FILETIME
   dwLowDateTime As Long
   dwHighDateTime As Long
End Type

Private Type WIN32_FIND_DATA
   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 FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
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

Private StopSearch As Boolean

Private Sub SearchForFiles(fName As String, Path As String)
'поиск файлов
    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

Private Sub SearchForFolders(fName As String, Path As String, File As String)
'поиск каталогов
    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

Private Function TrimNull(Start As String) As String
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

Private Sub cmdFind_Click()
Dim DriveName As String * 2

StopSearch = False
DriveName = Drive1.Drive
lstFiles.Clear

    Dim tmp As String
    Screen.MousePointer = 13
    lstFiles.Enabled = False
    SearchForFolders "*", DriveName & "\", Combo1.Text & vbNullString
    Label1.Caption = "Finded " & lstFiles.ListCount & " music files."
    lstFiles.Enabled = True
    Screen.MousePointer = 0

End Sub

Private Sub cmdStop_Click()
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-сайт: www.aliyev.us
 Профиль | | #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-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #12
Добавлено: 19.07.07 14:58
Сегодня что, день археолога? :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам