سلام
چطوری میتونیم کل دارایو هامو سرچ کنم و یه پسوند خاص رو پیدا کنم ؟
سلام
چطوری میتونیم کل دارایو هامو سرچ کنم و یه پسوند خاص رو پیدا کنم ؟
ویدوزت چیه و اون فرمت چیه؟؟؟نقل قول:
ویندوز xpنقل قول:
در ضمن این چه ربطی به سوال من داشت ؟!:18:
فکر کنم شما منظور منو نگرفته باشید ! می خواهم با ویژال بیسیک این کارو انجام بدم نه ......:27:
سلام
در تاپیک دیگری گفته بودید که از نسخه 2006 استفاده میکنید.
اگر اینطور است با تک دستور زیر میتوانید کل یک پارتیشن را جستجو کنید:
و برای کل پارتیشن ها هم:کد:Dim files() As String = System.IO.Directory.GetFiles("C:\", "*.exe", System.IO.SearchOption.AllDirectories)
البته میتوان کدهایی با سرعت اسکن بسیار بالاتر هم نوشت.کد:Dim files As New System.Collections.ArrayList()
For Each drive As System.IO.DriveInfo In System.IO.DriveInfo.GetDrives
Dim x() As String = System.IO.Directory.GetFiles(drive.Name, "*.exe", System.IO.SearchOption.AllDirectories)
If (x IsNot Nothing) Then files.AddRange(x)
Next
سلامنقل قول:
من از vb6 استفاده مي كنم .
خوب اين كد كه دادي رو كپي كردم ولي كلا خطا داد كل دستور ها قرمز شد . نمي دونم بايد چكار كنم???:31:
كسي نبود ما رو راهنمايي كنه ؟
فکر نکنم این کد به نسخه ای که تو باهاش کار میکنی بخوره.نقل قول:
سلام
من از vb6 استفاده مي كنم .
خوب اين كد كه دادي رو كپي كردم ولي كلا خطا داد كل دستور ها قرمز شد . نمي دونم بايد چكار كنم??? [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
دوست عزیز لطفا از دادن اسپم خودداری کنید ایشون که خودشون گفتند پیغام خطا میدهد دیگه لزومی نبود شما بگیدنقل قول:
سلام
برای به دست آوردن لیست درایوها میتوانید از API های کتابخانه kernel32 استفاده کنیدنقل قول:
چطوری میتونیم کل دارایو هامو سرچ کنم و یه پسوند خاص رو پیدا کنم ؟
من از vb6 استفاده مي كنم
GetLogicalDriveStrings
یا
GetLogicalDrives
=====
بعد باید هر درایو را اسکن کنید.
برای این عمل میتوانید از دستور Dir خود VB6 هم استفاده کنید یا از سه API زیر استفاده کنید:
FindFirstFile
FindNextFile
FindClose
که بازهم از کتابخانه kernel32 هستند.
البته در هر صورت این دستورات فقط محتویات یک پوشه را استخراج میکنند و شما باید در یک تابع خود فراخوان برای تمام زیر پوشه ها مجدداً تابع را اجرا کنید
=====
در واقع روند اصلی الگوریتم چنین است.
برای پارامترهای ورودی و خروجی api ها میتوانید به msdn و یا برنامه کمکی APILOAD.EXE رجوع کنید.
موفق باشید.
ميشه لطف كني دستور كاملش رو واسم بزارينقل قول:
سلام
متاسفانه و با شرمندگی من VB9 را نصب دارم اگر بخواهم کمک هم کنم فقط میتوانم کد 2008 بذارم که در 2005 هم کار خواهد کرد.
ولی سعی میکنم کمکتان کنم:
شما نیاز به این تعریف های پایه دارید
بعد روند کار برای هر پوشه چنین است که باید یک نمونه از ساختار WIN32_FIND_DATA تولید کنید و به FindFirstFile بدهید یک اشاره گر Long خواهید گرفت که برای ادامه کار دیگر FindNextFile را با این عدد اجرا خواهید کرد و در نهایت FindClose را برای بستن اشاره گر استفاده خواهید کرد.کد: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 * 260
cAlternate As String * 14
End Type
Private Declare Function FindClose Lib "kernel32" Alias "FindClose" (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
اگر با توابع خودفراخان هم مشکل دارید میتوانم توضیح دهم.
موفق باشید.