Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Как найти файл,зная его имя и расширение? Добавлено: 05.01.10 02:06  

Автор вопроса:  PROgrammIST | Web-сайт: forum.quotedev.org.ru | ICQ: 403099048 
Искал, как можно узнать список запущенных процессов на компе - нашел 2 полезные. В одном исходнике имя файла пишется вместе с его директорией (таких процессов получилось 27), а другой - возвращал только имя файла с расширением (их у меня оказалось 36). Для меня удобнее использовать тот, в котором 36. Ещё, нужно сделать так, чтобы я мог скопировать в папку с исходником этот файл, а как это сделать без полного пути я незнаю (по-моему это вообще невозможно). Так как можно найти файл?

P.S.: проверял количество всех процессов в одно время

Ответить

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

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



ICQ: 403099048 

Вопросов: 22
Ответов: 94
 Web-сайт: forum.quotedev.org.ru
 Профиль | | #1
Добавлено: 05.01.10 12:31
Всё. Перебрал несколько сайтов и нашёл)):

  1.  
  2. Public Sub ActionDIR(ByVal Path$)
  3. File1.Path = Path
  4. File1.Refresh
  5. For i = 0 To File1.ListCount - 1
  6. List1.AddItem AddBackSlash(Path) & File1.List(i)
  7. Next
  8. Dir1.Path = Path
  9. Dir1.Refresh
  10. For i = 0 To Dir1.ListCount - 1
  11. ActionDIR Dir1.List(i)
  12. Dir1.Path = Path
  13. Dir1.Refresh
  14. Next
  15. DoEvents
  16. End Sub
  17.  
  18. Public Function AddBackSlash(ByVal S$)
  19. If Right(S, 1) <> "\" Then S = S + "\"
  20. AddBackSlash = S
  21. End Function
  22.  
  23. Private Sub Form_Load()
  24. ''''''''''''''ПОКАЗЫВАЕМ ФОРМУ''''''''''
  25. Show
  26. Refresh
  27. DoEvents
  28. tim = Timer
  29. Do While (Timer - tim) < 1
  30. DoEvents
  31. Loop
  32. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  33. File1.Pattern = "explorer.exe" 'Устанавливаем поиск по маске
  34. For i = 0 To Drive1.ListCount - 2
  35. ActionDIR Left(Drive1.List(i), 2) & "\"
  36. Next
  37. End Sub

Ответить

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



ICQ: 403099048 

Вопросов: 22
Ответов: 94
 Web-сайт: forum.quotedev.org.ru
 Профиль | | #2
Добавлено: 05.01.10 12:32
Сорри за вопрос - не в ту тему написал))

Ответить

Номер ответа: 3
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #3 Добавлено: 05.01.10 15:51
SearchTreeForFile
если правильно написал, но лучше
FindFirstFile
FindNextFile

Ответить

Номер ответа: 4
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #4
Добавлено: 05.01.10 16:51
что-то как-то контролы для поиска использовать...
Есть функция Dir$ которая с радостью выдаст список файлов и папок.

Ответить

Номер ответа: 5
Автор ответа:
 PROgrammIST



ICQ: 403099048 

Вопросов: 22
Ответов: 94
 Web-сайт: forum.quotedev.org.ru
 Профиль | | #5
Добавлено: 05.01.10 17:15
что-то как-то контролы для поиска использовать...
Есть функция Dir$ которая с радостью выдаст список файлов и папок.

Ну вполне возможно, но что нашёл, то и выложил)))) Так что уж строго не судите:)

Ответить

Номер ответа: 6
Автор ответа:
 Саня



ICQ: 553816426 

Вопросов: 10
Ответов: 99
 Профиль | | #6 Добавлено: 05.01.10 23:58
Добавь к проэкту модуль
вот код модуля:
  1. Option Explicit
  2. '****************************************************************
  3. '&#196;&#224;&#237;&#237;&#251;&#233; &#236;&#238;&#228;&#243;&#235;&#252; &#239;&#240;&#229;&#228;&#237;&#224;&#231;&#237;&#224;&#247;&#229;&#237; &#228;&#235;&#255; &#239;&#240;&#238;&#226;&#229;&#228;&#229;&#237;&#232;&#255; &#239;&#238;&#232;&#241;&#234;&#224; &#244;&#224;&#233;&#235;&#238;&#226; &#239;&#238; &#236;&#224;&#241;&#234;&#229;
  4. '&#226; &#243;&#234;&#224;&#231;&#224;&#237;&#237;&#238;&#236; &#234;&#224;&#242;&#224;&#235;&#238;&#227;&#229; &#232; &#229;&#227;&#238; &#239;&#238;&#228;&#234;&#224;&#242;&#224;&#235;&#238;&#227;&#224;&#245;
  5. '&#192;&#226;&#242;&#238;&#240;: &#192;&#237;&#228;&#240;&#229;&#233; 'd1' &#207;&#229;&#240;&#236;&#232;&#237;&#238;&#226;
  6. 'E-Mail: d1pro@mail.ru
  7. 'Team HW 2002
  8. '****************************************************************
  9. Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
  10. Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
  11. Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
  12.  
  13. Public Enum AtributConst
  14.     FILE_ATTRIBUTE_ARCHIVE = &H20
  15.     FILE_ATTRIBUTE_COMPRESSED = &H800
  16.     FILE_ATTRIBUTE_DIRECTORY = &H10
  17.     'FILE_ATTRIBUTE_ENCRYPTED=???
  18.     FILE_ATTRIBUTE_HIDDEN = &H2
  19.     FILE_ATTRIBUTE_NORMAL = &H80
  20.     'FILE_ATTRIBUTE_OFFLINE=???
  21.     FILE_ATTRIBUTE_READONLY = &H1
  22.     'FILE_ATTRIBUTE_REPARSE_POINT=???
  23.     'FILE_ATTRIBUTE_SPARSE_FILE=???
  24.     FILE_ATTRIBUTE_SYSTEM = &H4
  25.     FILE_ATTRIBUTE_TEMPORARY = &H100
  26. End Enum
  27. Public Type FILETIME
  28.     dwLowDateTime       As Long
  29.     dwHighDateTime      As Long
  30. End Type
  31. Public Type WIN32_FIND_DATA
  32.     dwFileAttributes    As AtributConst
  33.     ftCreationTime      As FILETIME
  34.     ftLastAccessTime    As FILETIME
  35.     ftLastWriteTime     As FILETIME
  36.     nFileSizeHigh       As Long
  37.     nFileSizeLow        As Long
  38.     dwReserved0         As Long
  39.     dwReserved1         As Long
  40.     cFileName           As String * 260
  41.     cAlternate          As String * 14
  42. End Type
  43. Private Const INVALID_HANDLE_VALUE = -1                     '&#194;&#238;&#231;&#237;&#232;&#234;&#224;&#229;&#242; &#239;&#240;&#232; &#238;&#242;&#241;&#243;&#242;&#241;&#242;&#226;&#232;&#232; &#244;&#224;&#233;&#235;&#224;
  44.  
  45. Public Function StartFind(ByVal sFilter As String, ByRef FindArray() As WIN32_FIND_DATA)
  46.     Dim lngHandle As Long                                   '&#213;&#224;&#237;&#228;&#235; &#238;&#242;&#234;&#240;&#251;&#242;&#238;&#227;&#238; &#244;&#224;&#233;&#235;&#224;
  47.     Dim TempData As WIN32_FIND_DATA                         '&#194;&#240;&#229;&#236;&#229;&#237;&#237;&#224;&#255; &#239;&#229;&#240;&#229;&#236;&#229;&#237;&#237;&#224;&#255;
  48.     
  49.     lngHandle = FindFirstFile(sFilter & Chr(0), TempData)   '&#205;&#224;&#245;&#238;&#228;&#232;&#236; &#245;&#224;&#237;&#228;&#235;
  50.     If lngHandle = INVALID_HANDLE_VALUE Then Exit Function  '&#197;&#241;&#235;&#232; &#237;&#232;&#247;&#229;&#227;&#238; &#237;&#229;&#242;, &#243;&#245;&#238;&#228;&#232;&#236;
  51.     ReDim FindArray(0)                                      '&#208;&#229;&#241;&#224;&#233;&#231;&#232;&#236; &#236;&#224;&#241;&#241;&#232;&#226; &#239;&#238;&#228; 1-&#233; &#244;&#224;&#233;&#235; (&#228;&#232;&#240;&#229;&#234;&#242;&#238;&#240;&#232;&#254;)
  52.     FindArray(0) = TempData                                 '&#207;&#240;&#232;&#241;&#226;&#224;&#229;&#226;&#224;&#229;&#236; &#232;&#237;&#244;&#238;&#240;&#236;&#224;&#246;&#232;&#254; &#238; &#244;&#224;&#233;&#235;&#229;
  53.     
  54.     Do Until FindNextFile(lngHandle, TempData) = 0          '&#207;&#240;&#238;&#228;&#238;&#235;&#230;&#224;&#229;&#236; &#239;&#238;&#232;&#241;&#234;, &#239;&#238;&#234;&#224; &#237;&#229; &#238;&#248;&#232;&#225;&#229;&#236;&#241;&#255;
  55.         DoEvents                                            '&#205;&#229; &#231;&#224;&#226;&#232;&#241;&#224;&#229;&#236;
  56.         ReDim Preserve FindArray(UBound(FindArray) + 1)     '&#208;&#229;&#241;&#224;&#233;&#231;&#232;&#236; &#236;&#224;&#241;&#241;&#232;&#226; &#237;&#224; 1 &#225;&#238;&#235;&#252;&#248;&#229; &#239;&#240;&#229;&#230;&#237;&#229;&#227;&#238;
  57.         FindArray(UBound(FindArray)) = TempData             '&#207;&#240;&#232;&#241;&#226;&#238;&#229;&#237;&#232;&#229; &#238;&#247;&#229;&#240;&#229;&#228;&#237;&#238;&#233; &#239;&#238;&#240;&#246;&#232;&#232; &#232;&#237;&#244;&#238;&#240;&#236;&#224;&#246;&#232;&#232;
  58.     Loop
  59.  
  60.     Call FindClose(lngHandle)                               '&#207;&#238;&#225;&#224;&#235;&#238;&#226;&#224;&#235;&#232;&#241;&#252; &#228;&#224; &#232; &#245;&#226;&#224;&#242;&#232;&#242;...
  61. End Function
  62.  
  63. '&#207;&#238;&#232;&#241;&#234; &#244;&#224;&#233;&#235;&#238;&#226; &#239;&#238; &#236;&#224;&#241;&#234;&#229; &#226; &#239;&#238;&#228;&#234;&#224;&#242;&#224;&#235;&#238;&#227;&#224;&#245;
  64. Public Sub ScanForFiles(StartPath As String, Pattern As String, Files() As String)
  65.     Dim I As Long, Dir1() As String, File1() As String, File As Long
  66.     File = UboundS(Files())
  67.     File = File + 1
  68.     If Mid(StartPath, Len(StartPath), 1) = "\" Then
  69.     Else
  70.         StartPath = StartPath + "\"
  71.     End If
  72.     DirBoxEmu StartPath, Dir1()
  73.     FileBoxEmu StartPath, Pattern, File1()
  74.     For I = 0 To UboundS(File1())
  75.         DoEvents
  76.         ReDim Preserve Files(I + File)
  77.         Files(I + File) = StartPath + File1(I)
  78.     Next
  79.     For I = 0 To UboundS(Dir1())
  80.         DoEvents
  81.         ScanForFiles StartPath + Dir1(I), Pattern, Files()
  82.     Next
  83. End Sub
  84.  
  85. '&#221;&#236;&#243;&#235;&#255;&#246;&#232;&#255; DirBox
  86. Private Sub DirBoxEmu(Path As String, Dirs() As String)
  87.     Dim Data() As WIN32_FIND_DATA, I As Long, Counter As Long, TempName As String
  88.     Counter = -1
  89.     Erase Dirs()
  90.     If Mid(Path, Len(Path), 1) = "\" Then
  91.     Else
  92.         Path = Path + "\"
  93.     End If
  94.     Erase Data()
  95.     StartFind Path + "*", Data()
  96.     For I = 0 To UboundFind(Data())
  97.         DoEvents
  98.         TempName = Left(Data(I).cFileName, InStr(1, Data(I).cFileName, Chr(0)) - 1)
  99.         If TempName <> "." And TempName <> ".." Then
  100.             If GetEntryType(Data(I).dwFileAttributes) = 1 Then
  101.                 Counter = Counter + 1
  102.                 ReDim Preserve Dirs(Counter)
  103.                 Dirs(Counter) = TempName
  104.             End If
  105.         End If
  106.     Next
  107. End Sub
  108.  
  109. '&#221;&#236;&#243;&#235;&#255;&#246;&#232;&#255; FileBox
  110. Private Sub FileBoxEmu(Path As String, Filter As String, Files() As String)
  111.     Dim Data() As WIN32_FIND_DATA, Repeat As Long, I As Long, j As Long, Counter As Long, Filters() As String, TempName As String
  112.     Counter = -1
  113.     Erase Files()
  114.     Erase Filters()
  115.     If Mid(Path, Len(Path), 1) = "\" Then
  116.     Else
  117.         Path = Path + "\"
  118.     End If
  119.     Filters() = Split(Filter, ";")
  120.     Counter = UboundS(Filters())
  121.     If Counter = -1 Then
  122.         Repeat = 0
  123.         ReDim Filters(0)
  124.         Filters(0) = "*"
  125.     Else
  126.         Repeat = Counter
  127.     End If
  128.     Counter = -1
  129.     For j = 0 To Repeat
  130.         DoEvents
  131.         Erase Data()
  132.         StartFind Path + Filters(j), Data()
  133.         For I = 0 To UboundFind(Data())
  134.             DoEvents
  135.             TempName = Left(Data(I).cFileName, InStr(1, Data(I).cFileName, Chr(0)) - 1)
  136.             If TempName <> "." And TempName <> ".." Then
  137.                 If GetEntryType(Data(I).dwFileAttributes) = 0 Then
  138.                     Counter = Counter + 1
  139.                     ReDim Preserve Files(Counter)
  140.                     Files(Counter) = TempName
  141.                 End If
  142.             End If
  143.         Next
  144.     Next
  145. End Sub
  146.  
  147. Private Function GetEntryType(dwAttributes As Long) As Long
  148.     GetEntryType = 0 '&#244;&#224;&#233;&#235; &#239;&#238; &#243;&#236;&#238;&#235;&#247;&#224;&#237;&#232;&#255;
  149.     If (dwAttributes And &H10) = &H10 Then
  150.         GetEntryType = 1 ' &#234;&#224;&#242;&#224;&#235;&#238;&#227;
  151.     Else
  152.         GetEntryType = 0 '&#244;&#224;&#233;&#235;
  153.     End If
  154. End Function
  155.  
  156. '&#209;&#242;&#240;&#224;&#237;&#237;&#238;&#241;&#242;&#232; &#226; &#240;&#224;&#225;&#238;&#242;&#232; &#244;&#243;&#237;&#234;&#246;&#232;&#232; UBound() &#226;&#251;&#237;&#243;&#228;&#232;&#235;&#232; &#237;&#224;&#239;&#232;&#241;&#224;&#242;&#252; &#241;&#226;&#238;&#232;
  157. Public Function UboundFind(Data() As WIN32_FIND_DATA) As Long
  158.     On Error GoTo Handler:
  159.     UboundFind = UBound(Data())
  160.     Exit Function
  161. Handler:
  162.     UboundFind = -1
  163. End Function
  164.  
  165. Public Function UboundS(Data() As String) As Long
  166.     On Error GoTo Handler:
  167.     UboundS = UBound(Data())
  168.     Exit Function
  169. Handler:
  170.     UboundS = -1
  171. End Function


поиск файлов производишь так:
  1. Dim a() As String
  2. ScanForFiles "здесь имя дискак", "здесь имя файла для поиска или маска", a()
переменная а() будет масивом результата поиска каждый элемент масива полный путь к найденому файлу.

Ответить

Номер ответа: 7
Автор ответа:
 Саня



ICQ: 553816426 

Вопросов: 10
Ответов: 99
 Профиль | | #7 Добавлено: 06.01.10 00:10
Ух ты с кодировкой коментариев проблемы, ну они в принцыпе не нужны.
Если хочешь могу сбросить (сюда sdrus31@yandex.ru) пример в сжаном виде 4,5 килобайта. Эта программа ищет файлы по заданой маске на всех доступных логических дисках.

Ответить

Номер ответа: 8
Автор ответа:
 PROgrammIST



ICQ: 403099048 

Вопросов: 22
Ответов: 94
 Web-сайт: forum.quotedev.org.ru
 Профиль | | #8
Добавлено: 06.01.10 20:16
Саня, ну можно и скинуть)) Просто пытался увидеть результат, но пишет, что "несовпадение типов".

Ответить

Номер ответа: 9
Автор ответа:
 Саня



ICQ: 553816426 

Вопросов: 10
Ответов: 99
 Профиль | | #9 Добавлено: 06.01.10 20:22
Держи!

Ответить

Номер ответа: 10
Автор ответа:
 PROgrammIST



ICQ: 403099048 

Вопросов: 22
Ответов: 94
 Web-сайт: forum.quotedev.org.ru
 Профиль | | #10
Добавлено: 06.01.10 20:50
Всё бы хорошо, только ничего не пришло))) Одно пустое письмо))

Ответить

Номер ответа: 11
Автор ответа:
 PROgrammIST



ICQ: 403099048 

Вопросов: 22
Ответов: 94
 Web-сайт: forum.quotedev.org.ru
 Профиль | | #11
Добавлено: 06.01.10 20:51
Еси не сложно, переотправь сюды - sdrus31@mail.ru

Ответить

Страница: 1 |

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



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