View Full Version : سوال: کپی کردن اطلاعات از روی سیدی به داخل درایو ویندوز
emprator2009
جمعه 09 اسفند 1387, 19:01 عصر
سلام به همه دوستان گل و برنامه نویس
من یک برنامه ای می خواهم که یک فایل را از روی سیدی به داخل درایوی که ویندوز و پوشه program file در آن نصب شده کپی کنه.
ممنون میشم کسی برنامه رو بهم بده.
موفق باشید
xxxxx_xxxxx
شنبه 10 اسفند 1387, 03:27 صبح
سلام
كارهايي كه بايد انجام بشن:
1- شناسايي درايو هاي CD
2- وجود يا عدم وجود CD در CD-ROM
3- كپي فايل مورد نظر در...
3-1- شناسايي درايو ويندوز
3-2- شناسايي آدرس Program Files
4- كپي كردن فايل
Private Declare Function GetDriveTypeA Lib "kernel32.dll" (ByVal nDriev As String) As Long
Private Sub Command1_Click()
If GetDriveTypeA("C:\") = 5 Then CopyFrom ("C:\")
If GetDriveTypeA("D:\") = 5 Then CopyFrom ("D:\")
If GetDriveTypeA("E:\") = 5 Then CopyFrom ("E:\")
If GetDriveTypeA("F:\") = 5 Then CopyFrom ("F:\")
If GetDriveTypeA("G:\") = 5 Then CopyFrom ("G:\")
If GetDriveTypeA("H:\") = 5 Then CopyFrom ("H:\")
If GetDriveTypeA("I:\") = 5 Then CopyFrom ("I:\")
If GetDriveTypeA("J:\") = 5 Then CopyFrom ("J:\")
End Sub
Private Sub CopyFrom(drv As String)
On Error Resume Next
w = Environ("windir")
w = Left(w, 3) & "Program Files\"
FileCopy drv & Text1.Text, w & Text1.Text
End Sub
توضيح: با Environ ميتونيم آدرس هاي مخصوصي رو بدست بياريم مثلاً وقتي بهش windir بديم آدرس پوشه ويندوز رو برميگردونه. بعد سه كاراكتر اولش رو با كلمه Program Files جمع مي كنيم ميشه آدرس Program Files
دستورات توي Command براي شناسايي درايو CD-Rom هستند. البته كار درستي نيست چون ممكنه اصلاً درايو موردنظر y يا z باشه. مي تونيم تا آخر(z) همون خط رو كپي كنيد. ولي طريقه اصلي بدست آوردن درايوها استفاده از تابع API به نام GetLogicalDrives هست.
on error resume next رو هم براي اين گذاشتم كه ممكنه تو درايو CD-ROM موردنظر cd نباشه و يا فايل موردنظر تو cd نباشه.
موفق باشيد/
ويرايش:
براي بدست آوردن آدرس Program Files مي توان مستقيماً بجاي windir در پرانتز نوشت programfiles اونوقت نيازي به خط سوم در پردازه CopyFrom نيست، فقط بايد به آخرش يك \ اضافه كرد.
emprator2009
شنبه 10 اسفند 1387, 06:25 صبح
ممنونم دوست عزیز
خیلی آقایی:قلب:
فقط یک سوال کوچولو باقی می مونه:
اگر فایل مورد نظر درون یک پوشه داخل سیدی باشه بعد چه جوری باید آدرس رو درون تکست باکس وارد کنیم؟
xxxxx_xxxxx
شنبه 10 اسفند 1387, 06:36 صبح
نام پوشه و بعد فايل، مثل:
Folder\File.txt
emprator2009
شنبه 10 اسفند 1387, 14:27 عصر
خیلی ممنون
من هم قبلا و هم الان که گفتی این کار رو انجام دادم ولی نتیجه نداد.
درضمن اگر سیدی درون سی دی رام نباشه هیچ پیغامی نمیده:متفکر:
میشه برنامه رو اصلاح کنی؟
xxxxx_xxxxx
شنبه 10 اسفند 1387, 19:18 عصر
دليل كپي نشدن اينه كه من نام فايل مقصد رو كل متن textbox درنظر گرفته بودم و وقتي آدرس فولدر و فايل ميداديد به برنامه اون هم سعي ميكرد تا تو فولدر program files فولدري ديگري با نام همان فولدر cd پيدا كنه كه وجود نداشت براي همين كپي نمي شد.
به اين صورت تغييرش دادم:
Private Declare Function GetDriveTypeA Lib "kernel32.dll" (ByVal nDriev As String) As Long
Dim er As Boolean
Private Sub Command1_Click()
er = False
If GetDriveTypeA("C:\") = 5 Then CopyFrom ("C:\")
If GetDriveTypeA("D:\") = 5 Then CopyFrom ("D:\")
If GetDriveTypeA("E:\") = 5 Then CopyFrom ("E:\")
If GetDriveTypeA("F:\") = 5 Then CopyFrom ("F:\")
If GetDriveTypeA("G:\") = 5 Then CopyFrom ("G:\")
If GetDriveTypeA("H:\") = 5 Then CopyFrom ("H:\")
If GetDriveTypeA("I:\") = 5 Then CopyFrom ("I:\")
If GetDriveTypeA("J:\") = 5 Then CopyFrom ("J:\")
If er = True Then MsgBox "Please Insert CD into Drive" & vbCrLf & "or this file is not exist.", vbExclamation, "Error"
End Sub
Private Sub CopyFrom(drv As String)
On Error GoTo XxxxX
w = Environ("windir")
w = Left(w, 3) & "Program Files\"
slashpos = InStrRev(Text1.Text, "\")
fname = Mid(Text1.Text, slashpos + 1)
FileCopy drv & Text1.Text, w & fname
MsgBox "File Copied", vbInformation
End
XxxxX: er = True
End Sub
slashpos مكان وجود كاراكتر \ تو text هست و با mid از اونجا به بعد رو به عنوان نام فايل درنظر مي گيريم.
براي پيغام هم كه كاري نداره ديگه. پيغام رو جايي قرار ميديم كه تو هيچ كدوم از درايوهاي cd فايل موردنظر وجود نداشته باشه.
موفق باشيد/
ويرايش:
براي بدست آوردن آدرس Program Files مي توان مستقيماً بجاي windir در پرانتز نوشت programfiles اونوقت نيازي به خط سوم در پردازه CopyFrom نيست، فقط بايد به آخرش يك \ اضافه كرد.
SAEID2009
سه شنبه 05 خرداد 1388, 21:46 عصر
سلام به همگی آیا میشه این برنامه رو طوری تغییر داد که مقصدش برای کپی عوض بشه.مثلا توی همه درایو ها بگرده و پوشه ای به نام ali رو پیدا کنه (درضمن این نکته رو هم بگم که شاید این پوشه زیر مجموعه ای از یک پوشه دیگر باشد.)
مرسی
شدیدا به این برنامه نیاز دارم .
خوشحال میشم کسی کمکم کنه
xxxxx_xxxxx
سه شنبه 05 خرداد 1388, 22:25 عصر
شما اول بايد يك برنامه (تابع) بنويسيد كه دنبال فولدر موردنظر بگرده بعد آدرس فولدر رو پاس بده به تابع FileCopy
براي جستجو از FSO كمك بگيريد.
SAEID2009
سه شنبه 05 خرداد 1388, 22:59 عصر
ممنون میشم برنامه رو تکمیل کنید و بگذارد.من با fso بلد نیستم کار کنم.
ممنون
SAEID2009
چهارشنبه 06 خرداد 1388, 21:31 عصر
دوستان میشه یکم تعجیل کنید.کارم فوریه.
ممنون
Pr0grammer
شنبه 09 خرداد 1388, 00:55 صبح
سلام به همگی آیا میشه این برنامه رو طوری تغییر داد که مقصدش برای کپی عوض بشه.مثلا توی همه درایو ها بگرده و پوشه ای به نام ali رو پیدا کنه (درضمن این نکته رو هم بگم که شاید این پوشه زیر مجموعه ای از یک پوشه دیگر باشد.)
مرسی
شدیدا به این برنامه نیاز دارم .
خوشحال میشم کسی کمکم کنه
به نظر من، این کار زیاد نرمالی نیست!! فکر کنید برای پیدا کردن مثلاً همون پوشه ali باید زمان زيادي صرف بشه تا توی همه درایو ها رو کاملاً بگرده؛ حتی ممکنه برنامه هنگ کنه!
چرا یه فکر دیگه ای نمی کنید؟
vbhamed
یک شنبه 10 خرداد 1388, 00:38 صبح
سلام
اگر منظور نهاييتون اينه كه برنامه اي كه قبلا نصب شده رو آپديت كنيد، بهتره از روش زير استفاده كنيد (البته اگر منظور رو درست فهميده باشم، اگر هم نه فكر كنم در صورتي كه بگيد هدف شما از اين كار چيه بهتر بشه راهنمايي كرد)
1 - در برنامتون مسير اجرا رو در مكاني مشخص يا توي رجيستري يادداشت كنيد
2 - برنامه اي كه روي سي دي هست بره اون فايل روي هارد يا محتواي كليد رجيستري رو بخونه و مسير برنامه قبلي نصب شده رو پيدا كنه و عمل كپي رو انجام بده
اينطوري نياز نيست زمان زيادي رو صرف جستجوي پوشه كنيد، ضمن اينكه ممكنه پوشه هاي ديگري هم باشه كه تداخل ايجاد بشه
reza_akbari2009
پنج شنبه 28 خرداد 1388, 21:03 عصر
سلام عزیزان این برنامه ای که گذاشتید یک مشکل داره و اون اینه که وقتی ما 2تا درایو سیدی داشته باشیم و اگر درون یکی از اون ها اطلاعات ما باشه و درون دیگری نباشه برنامه دو تا پیغام میده اولی مبنی بر کپی شدن اطلاعات و دومی بعد از اینکه دکمه ok پیام اولی رو زدیم میگه لطفا سیدی رو درون دستگاه بگذارید.اگر ممکنه این مشکل رو حل کنید.
xxxxx_xxxxx
پنج شنبه 28 خرداد 1388, 22:33 عصر
دوباره بريد صفحه قبل و نگاه كنيد كه بعد از پيغام كپي شدن فايل بلافاصله دستور end هست.:متفکر:
پس چنين چيزي ممكن نيست كه هر دو پيغام باهم داده بشه.
reza_akbari2009
پنج شنبه 28 خرداد 1388, 22:47 عصر
ممنون
خب ببینید بعد از پیغام کپی شدن اگر دستور end باشه برنامه بسته میشه من می خواهم برنامه همچنان باز باشه.
دوستان چی شد کسی نیست برنامه رو اصلاح کنه؟؟؟
دوستان میشه یکم تعجیل کنید؟
کارم فوریه.
دوستان چرا کسی نیست جواب منو بده خواهش میکنم یکی جواب بده من هرچی پست توی این سایت دادم هیچکس جواب منو نمیده.اگر کسی می تونه کمک کنه براش دعا میکنم.
موفق باشید
mmssoft
یک شنبه 31 خرداد 1388, 21:59 عصر
خیلی ممنون
من هم قبلا و هم الان که گفتی این کار رو انجام دادم ولی نتیجه نداد.
درضمن اگر سیدی درون سی دی رام نباشه هیچ پیغامی نمیده:متفکر:
میشه برنامه رو اصلاح کنی؟
راستی کسی لینک برنامه Active Skin4.3 FULLداره؟
اگه برنامه Active Skin 4.3 Full می خوای به صفحات زیر یه سری بزن :
http://www.topshareware.com/activeskin-4.3/downloads/1.htm
http://www.dreamincode.net/forums/showtopic35801.htm
http://message.pcdj.com/archive/index.php?t-10017.html
http://activeskin.pcfiles.com
به کارت اومد یا نه؟
reza_akbari2009
دوشنبه 01 تیر 1388, 06:40 صبح
mmssoft (http://barnamenevis.org/forum/member.php?u=107519) جان این سوالی آخری رو که من پرسیدم میشه جوابش رو بدی؟
حسن تیکه
جمعه 20 شهریور 1388, 15:09 عصر
تاپیک عالی
اگر بخواهیم کل اطلاعات یک دیسک رو به صورت کامل در مسیر G:\Disk کپی کنیم چی دستوری باید بنویسیم ؟
لطفا کد کامل
ممنون
حسن تیکه
جمعه 20 شهریور 1388, 16:14 عصر
خودم فهمیدم دوستان :چشمک:
0918739
جمعه 08 بهمن 1389, 10:23 صبح
سلام به همه دوستان گل و برنامه نویس
من یک برنامه ای می خواهم که یک فایل را از روی سیدی به داخل درایوی که ویندوز و پوشه program file در آن نصب شده کپی کنه.
ممنون میشم کسی برنامه رو بهم بده.
راستی کسی می دونه چه جوری باید برنامه Active Skin4.27 رو ریجستر کردن تا پیام ریجستر از روی فرم حذف بشه؟
مرسی
موفق باشید
سلام آقا اگه به جای سیدی USB باشه چطور می شه USB رو شناسایی کرد بعد این اعمال رو روش انجام داد؟
xxxxx_xxxxx
جمعه 08 بهمن 1389, 20:43 عصر
سلام آقا اگه به جای سیدی USB باشه چطور می شه USB رو شناسایی کرد بعد این اعمال رو روش انجام داد؟
اگر خروجی تابع GetDriveType عدد 2 باشه یعنی درایو از نوع قابل حمل مثل Flash Memory هست.
اگر هم میخواید به محض اتصال به USB، درایو شناسایی بشه تاپیک زیر رو ببینید:
عکس العمل به محض اتصال فلش مموری (http://barnamenevis.org/showthread.php?207376-%D8%B9%DA%A9%D8%B3-%D8%A7%D9%84%D8%B9%D9%85%D9%84-%D8%A8%D9%87-%D9%85%D8%AD%D8%B6-%D8%A7%D8%AA%D8%B5%D8%A7%D9%84-%D9%81%D9%84%D8%B4-%D9%85%D9%85%D9%88%D8%B1%DB%8C)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.