PDA

View Full Version : سوال: نمایش روند کپی فایل از درون برنامه به هارد



butterfly8528
جمعه 29 خرداد 1388, 22:00 عصر
باز هم سلام دوستان گل

من در برنامه ام چند فایل رو که در resource قرار دادم روی هارد کپی می کنم .

چطور میتونم روند و زمان کپی شدن رو توسط یک ProgressBar نمایش بدم ؟؟؟

شدیدا ظروری :تشویق:

miniator
شنبه 30 خرداد 1388, 11:10 صبح
فكر كنم بايد خصوصيت مكس ProgressBar رو برابر اندازه فايل مورد نظر بذاري !

majjjj
شنبه 30 خرداد 1388, 11:32 صبح
'This program needs a Common Dialog Box, named CDBox.
' (To add the Common Dialog Box to your tools menu, go to Project->Components (or press CTRL-T)
' and select Microsoft Common Dialog control)
Private Type SHFILEOPSTRUCT
hWnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAborted As Boolean
hNameMaps As Long
sProgress As String
End Type
Private Const FO_DELETE = &H3
Private Const FOF_ALLOWUNDO = &H40
Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Private Sub Form_Load()
'KPD-Team 1998
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Dim SHFileOp As SHFILEOPSTRUCT
'Set the dialog's title
CDBox.DialogTitle = "Select a file to delete ..."
'Set the dialog's filter
CDBox.Filter = "All Files (*.*)|*.*"
'Show the 'Open File' dialog
CDBox.ShowOpen
With SHFileOp
'Delete the file
.wFunc = FO_DELETE
'Select the file
.pFrom = CDBox.filename
'Allow 'move to recycle bn'
.fFlags = FOF_ALLOWUNDO
End With
'perform file operation
SHFileOperation SHFileOp
MsgBox "The file '" + CDBox.filename + "' has been moved to your Recycling Bin !", vbInformation + vbOKOnly, App.Title
End Sub

این یک نمونه

javadt
شنبه 30 خرداد 1388, 13:30 عصر
ا اینکه فقط فایل رو پاک می کنه و روندی نشون نمی ده

butterfly8528
شنبه 30 خرداد 1388, 22:23 عصر
majjjj عزیز میشه بگی این چیه ؟؟؟؟؟؟؟؟؟؟؟

miniator جان این راهش نیست .

لطفا کمممممممممممممممک کنید :عصبانی++::عصبانی++::عصبانی++:

butterfly8528
یک شنبه 31 خرداد 1388, 03:19 صبح
دوستان گل واقعا راهی نداره ؟؟؟ :عصبانی++::عصبانی++::عصبانی++:

majjjj
یک شنبه 31 خرداد 1388, 08:52 صبح
ببخشید فکر کردم میخواهید یک فایل رو از روی هارد به یک جای دیگه روی هارد کپی کنید
برای این کاری که میخواهید انجام بدین اینجوری عمل کنید
ProgressBar رو تا موقعی که حجم فایل شما با حجم فایل کپی شده روی هارد یکی نشده توسط یک تایمر مقدار دهی کنید


Private Const OPEN_EXISTING = 3
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type BY_HANDLE_FILE_INFORMATION
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
dwVolumeSerialNumber As Long
nFileSizeHigh As Long
nFileSizeLow As Long
nNumberOfLinks As Long
nFileIndexHigh As Long
nFileIndexLow As Long
End Type
Private Declare Function GetFileInformationByHandle Lib "kernel32" (ByVal hFile As Long, lpFileInformation As BY_HANDLE_FILE_INFORMATION) As Long
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Sub Form_Load()
'KPD-Team 2001
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@allapi.net
Dim hFile As Long, FileInfo As BY_HANDLE_FILE_INFORMATION
'create a handle to the file 'c:\autoexec.bat'
hFile = CreateFile("c:\autoexec.bat", 0, 0, ByVal 0&, OPEN_EXISTING, 0, ByVal 0&)
'retrieve the file information
GetFileInformationByHandle hFile, FileInfo
'close the handle
CloseHandle hFile
'show the result
MsgBox "File size: " + CStr(FileInfo.nFileSizeLow), vbInformation
End Sub

این نمونه ای برای بدست اوردن حجم فایلتون هست ممکنه راه حل بهتری هم باشه ولی من چیز بهتری به نظرم نمیرسه

butterfly8528
یک شنبه 31 خرداد 1388, 12:53 عصر
ProgressBar رو تا موقعی که حجم فایل شما با حجم فایل کپی شده روی هارد یکی نشده توسط یک تایمر مقدار دهی کنید


majjjj جان باید راه مطمئن تر و بهتر مثل توابع api وجود داشته باشه :متفکر:

بلاخره اینستال شیلد ، ستاپ فکتوری ، وایز اینستالر و ... از یه راهی استفاده می کنند :افسرده:

کارم بدجوری گیره لطفا کمک کنید :گریه:

miniator
یک شنبه 31 خرداد 1388, 17:54 عصر
سلام !
تو اعماق هاردم اينو پيدا كردم ! بگير نگير داره ولي فكر كنم كارت راه بيفته ! :متفکر:
فقط آدرس ها رو تغيير بده !

موفق باشيد !

butterfly8528
یک شنبه 31 خرداد 1388, 20:51 عصر
miniator عزیز خیلی ممنون خودم این بلد بودم . ولی این چیزی نبود که من می خواستم .

عزیز دل من گفتم که فایل ها از Resource به هارد کپی میشن :عصبانی++:

واقعا انقدر سخته ؟؟؟؟؟؟؟؟؟؟؟

xxxxx_xxxxx
دوشنبه 01 تیر 1388, 01:16 صبح
با توجه به تعداد و حجم فايلهاتون پروگرس بار رو افزايش بديد. نرم افزارهايي كه اسم برديد هم همين كارو مي كنند.
مي تونيد براي بهتر شدن و اطمينان از انجام كپي كامل فايل ها اين كارو (http://barnamenevis.org/forum/showthread.php?t=163656) انجام بديد.

butterfly8528
دوشنبه 01 تیر 1388, 02:24 صبح
با توجه به تعداد و حجم فايلهاتون پروگرس بار رو افزايش بديد. نرم افزارهايي كه اسم برديد هم همين كارو مي كنند.
مي تونيد براي بهتر شدن و اطمينان از انجام كپي كامل فايل ها اين كارو (http://barnamenevis.org/forum/showthread.php?t=163656) انجام بديد.




منظورت رو خوب نگرفتم :متفکر:

xxxxx_xxxxx عزیز میشه برام نمونه کدش رو بزارید .

مهران رسا
دوشنبه 01 تیر 1388, 15:32 عصر
از نظر من . فایل ها رو در Resource قرار ندین . مثل برنامه InstallShield فایل ها رو فشرده و کدگذاری کنید و در کنار فایل اجرایی قرار بدین . اینطوری امنیت رو هم رعایت کردین .

واسه کپی کردن همراه با ProgressBar هم که فکر می کنم دوستان راه حل رو گفتن .

butterfly8528
دوشنبه 01 تیر 1388, 16:16 عصر
از نظر من . فایل ها رو در Resource قرار ندین . مثل برنامه InstallShield فایل ها رو فشرده و کدگذاری کنید و در کنار فایل اجرایی قرار بدین . اینطوری امنیت رو هم رعایت کردین .



میشه بگید چطوری باید این کار رو بکنم ؟؟ :متفکر:


واسه کپی کردن همراه با ProgressBar هم که فکر می کنم دوستان راه حل رو گفتن .

عزیز مطمئنی ؟؟؟؟ :لبخند: