الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[ تمت الإجابة ]البحث عن المجلدات بلاحقية معينة

بدأه abohamed في 23 ديسمبر 2008 · 6 رد · 635 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

ماهي طريقة البحث عن المجلدات ذات لاحقية (قناع ) معينة .

مثلا لدي عدة مجلدات تحمل قناع لوحة التحكم(.{21EC2020-3AEA-1069-A2DD-08002B30309D}) في أحد الدرايفات واريد أن يقوم الكود بعرض هذه المجلدات في قائمة ListBox .

أرجو أن يكون الشرح كافي .كم ارجو منك أخوتي الكرام التكرم بالرد .

وجزاكم الله الجنه ووفقكم لما يحب ويرضى .

والله الموفق

[وسط]

XCM59178.jpg

[/وسط]

[وسط] [وسط]الفريق العربي للبرمجة

[/وسط][/وسط]

#2

معقول ما احد يعرف الاجابة

للرفع

[وسط]

XCM59178.jpg

[/وسط]

[وسط] [وسط]الفريق العربي للبرمجة

[/وسط][/وسط]

#3
  1.  
  2. Private Sub Command1_Click()
  3. Dim A As String
  4. A = Dir$("D:*.*", vbDirectory)
  5. Do While A <> ""
  6.  
  7. If IsADirectory("D:" & A) And A Like "*.{*}" Then
  8. Print A,
  9. End If
  10. A = Dir$
  11. Loop
  12. End Sub
  13.  
  14. Public Function IsADirectory(ByVal TheName As String) As Boolean
  15. If GetAttr(TheName) And vbDirectory Then
  16. IsADirectory = True
  17. End If
  18. End Function
  19.  

سبحان الله وبحمده ... سبحان الله العظيم

#4

آسف لتأخري بالرد عليك

اول شي : جزاك الله الجنه ونفع الله بك وبعلمك .

الكود شغال وتمام 100 % . ولكن مشكلته أنه يبحث فقط في المجلدات الرئيسية .

فما هي الطريقة للبحث عن المجلدات الفرعية والمخفية أيضاً .

وسترك الله فوق الأرض ويوم العرض .

[وسط]

XCM59178.jpg

[/وسط]

[وسط] [وسط]الفريق العربي للبرمجة

[/وسط][/وسط]

#5
Dir$("D:\*.*", vbArchive + vbDirectory + vbHidden + vbNormal + vbReadOnly + vbSystem)

ليس كل ما يتمناه المرء يدركه

arabteam2000.gif

#6
افتح مشروع جديد وانسخ الكود الحالي وضعه داخل النافذه 
قم بوضع التالي على النافذه 
command1  و list1  و text1 و text2 و text3  و text4 
اكتب في مربع النص Text1 اسم القرص المطلوب البحث فيه مثلا D:
وفي مربع النص  Text2 *.* لعرض جميع المجلدات والمجلدات الفرعيه والملفات الموجوده تحت القرص D:

----------------------------------------------------------------------------------------------------------------------------------

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 Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long

Const MAX_PATH = 260
Const MAXDWORD = &HFFFF
Const INVALID_HANDLE_VALUE = -1
Const FILE_ATTRIBUTE_ARCHIVE = &H20
Const FILE_ATTRIBUTE_DIRECTORY = &H10
Const FILE_ATTRIBUTE_HIDDEN = &H2
Const FILE_ATTRIBUTE_NORMAL = &H80
Const FILE_ATTRIBUTE_READONLY = &H1
Const FILE_ATTRIBUTE_SYSTEM = &H4
Const FILE_ATTRIBUTE_TEMPORARY = &H100

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
Function StripNulls(OriginalStr As String) As String
	If (InStr(OriginalStr, Chr(0)) > 0) Then
		OriginalStr = Left(OriginalStr, InStr(OriginalStr, Chr(0)) - 1)
	End If
	StripNulls = OriginalStr
End Function

Function FindFilesAPI(path As String, SearchStr As String, FileCount As Integer, DirCount As Integer)
	'KPD-Team 1999
	'E-Mail: KPDTeam@Allapi.net
	'URL: http://www.allapi.net/

	Dim FileName As String ' Walking filename variable...
	Dim DirName As String ' SubDirectory Name
	Dim dirNames() As String ' Buffer for directory name entries
	Dim nDir As Integer ' Number of directories in this path
	Dim i As Integer ' For-loop counter...
	Dim hSearch As Long ' Search Handle
	Dim WFD As WIN32_FIND_DATA
	Dim Cont As Integer
	If Right(path, 1) <> "\" Then path = path & "\"
	' Search for subdirectories.
	nDir = 0
	ReDim dirNames(nDir)
	Cont = True
	hSearch = FindFirstFile(path & "*", WFD)
	If hSearch <> INVALID_HANDLE_VALUE Then
		Do While Cont
		DirName = StripNulls(WFD.cFileName)
		' Ignore the current and encompassing directories.
		If (DirName <> ".") And (DirName <> "..") Then
			' Check for directory with bitwise comparison.
			If GetFileAttributes(path & DirName) And FILE_ATTRIBUTE_DIRECTORY Then
				dirNames(nDir) = DirName
				DirCount = DirCount + 1
				nDir = nDir + 1
				ReDim Preserve dirNames(nDir)
			End If
		End If
		Cont = FindNextFile(hSearch, WFD) 'Get next subdirectory.
		Loop
		Cont = FindClose(hSearch)
	End If
	' Walk through this directory and sum file sizes.
	hSearch = FindFirstFile(path & SearchStr, WFD)
	Cont = True
	If hSearch <> INVALID_HANDLE_VALUE Then
		While Cont
			FileName = StripNulls(WFD.cFileName)
			If (FileName <> ".") And (FileName <> "..") Then
				FindFilesAPI = FindFilesAPI + (WFD.nFileSizeHigh * MAXDWORD) + WFD.nFileSizeLow
				FileCount = FileCount + 1
				List1.AddItem path & FileName
			End If
			Cont = FindNextFile(hSearch, WFD) ' Get next file
		Wend
		Cont = FindClose(hSearch)
	End If
	' If there are sub-directories...
	If nDir > 0 Then
		' Recursively walk into them...
		For i = 0 To nDir - 1
			FindFilesAPI = FindFilesAPI + FindFilesAPI(path & dirNames(i) & "\", SearchStr, FileCount, DirCount)
		Next i
	End If
End Function
Sub Command1_Click()
	Dim SearchPath As String, FindStr As String
	Dim FileSize As Long
	Dim NumFiles As Integer, NumDirs As Integer
	Screen.MousePointer = vbHourglass
	List1.Clear
	SearchPath = Text1.Text
	FindStr = Text2.Text
	FileSize = FindFilesAPI(SearchPath, FindStr, NumFiles, NumDirs)
	Text3.Text = NumFiles & " Files found in " & NumDirs + 1 & " Directories"
	Text4.Text = "Size of files found under " & SearchPath & " = " & Format(FileSize, "#,###,###,##0") & " Bytes"
	Screen.MousePointer = vbDefault
End Sub

تم تعديل هذه المشاركة بواسطة العقده في 29 ديسمبر 2008 في 18:14

ليس كل ما يتمناه المرء يدركه

arabteam2000.gif

#7

سلمت يداك

وبارك الله فيك أخي العقدة

[وسط]

XCM59178.jpg

[/وسط]

[وسط] [وسط]الفريق العربي للبرمجة

[/وسط][/وسط]

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…