سلام عزيزان
ببخشيد مي خواستم بدونم که اگر بخواهيم فايلمون در همه ي درايو هاي موجود کپي بشه چکار بايد بکنيم . منظورم اينکه تو همه ي درايو هاي که داريم .
Printable View
سلام عزيزان
ببخشيد مي خواستم بدونم که اگر بخواهيم فايلمون در همه ي درايو هاي موجود کپي بشه چکار بايد بکنيم . منظورم اينکه تو همه ي درايو هاي که داريم .
خوب filecopy رو چند بار واسه همه درایو ها بنویس دیگهنقل قول:
نوشته شده توسط blackroos
البته توابعی هستند که همه درایوهای موجود رو شناسایی میکنه (حتی cdrom , writer, fllopy,removable ) و به ترتیب اونارو میریزه تو یه آرایه و شما میتونی از اون آرایه تو یه حلقه for برای کپی فایل در همه درایوها استفاده کنی اینجوری کد نویسیت خلاصه تر و کلی تر میشه و برنامت تو هر سیستمی جواب میده
نقل قول:
نوشته شده توسط Payman_62
برنامه بدون خطا اجرا ميشه.ولي كار نميكنه.(يعني فايل در مسيري كه به Full_path تخصيص داديم كپي نميشه) :sad:
عزيزان خوب وقتي که از filecopy استفاده مي کنيم اگر درايو مشخص شده موجود نباشه برنامه با خطا مواجه مي شه . براي اينکه با خطا مواجه نشم بايد چي کار کنم اگر مي شه با يک کد توضيح بدين .
ببین به نظر من اون قسمت که بیتا گفت اضافه کنی که خطا رو رد کنه رو موقتا حذف کن تا بفهمی مشکلت از کجاستنقل قول:
نوشته شده توسط gold_dragon
اگه به جای متغیر full_path مثلا بذاری "C:\a.txt" کپی میشه؟ آخه فایل kernel32 تو ورژن های مختلف وبندوز یه تفاوت های کوچیک با هم دارن شاید مال تو این تابع رو نداشته باشه
برای رد کردن خطا بیتا گفت چی کار کنی ولی اگه قرار باشه دستور filecopy برای همه درایوها اجرا بشه ممکنه کار گره بخوره بهتره برای این که برنامت مطمن باشه و فقط تو درایوهای موجود کپی کنی و سر cd rom و فلاپی گیر نکنه از این دستورات استفاده کنی آدرس فایلو پیدا میکنه درایوهاتو شناسایی میکنه و فایلتو تو درایوهایی که امکان کپی وجود داشته باشه کپی میکنهنقل قول:
نوشته شده توسط blackroos
کد:Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Declare Function GetModuleFileName Lib "kernel32" Alias "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long
Dim Address As String, strNamedrv(40) As String, strSaveDrives As String
Dim i As Byte, j As Byte
Private Sub Form_Load()
'Find Address of your file
Address = String$(128, Chr$(0))
Address = Left$(Address, GetModuleFileName(hInst, Address, Len(Address)))
'Find your drives
strSaveDrives = String(255, Chr$(0))
ret& = GetLogicalDriveStrings(255, strSaveDrives)
For j = 1 To 100
If Left$(strSaveDrives, InStr(1, strSaveDrives, Chr$(0))) = Chr$(0) Then Exit For
strNamedrv(j) = Left$(strSaveDrives, InStr(1, strSaveDrives, Chr$(0)) - 1)
strSaveDrives = Right$(strSaveDrives, Len(strSaveDrives) - InStr(1, strSaveDrives, Chr$(0)))
Next j
'Copy your file in all drives
On Error Resume Next
For i = 1 To j
FileCopy Address, strNamedrv(i) & "NewName.exe"
Next i
End Sub