کپی گرفتن یک پوشه در ویژوال بیسیک

armin_mx

Member
سوال : كپي اطلاعات در وي بي

سلام دوستان چطور مي شه يك پوشه رو در وي بي از جايي به جاي ديگه كپي گرفت...
ممنون
 

the_king

مدیرکل انجمن
دو راه حل واسه انجام اینکار معرفی می کنم :

راه اول استفاده از کتابخانه Microsoft Scripting Runtime است.
در منوی Project ویژوال بیسیک روی آیتم References کلیک کنید.
حالا عنوان Microsoft Scripting Runtime را در لیست بیابید و تیک بزنید. (مسیر پیشفرض این کتابخانه اینجا است :
C:\WINDOWS\system32\scrrun.dll

حالا کد زیر می تواند پوشه C:\Folder1 را با تمام محتویات و زیرشاخه هایش درون پوشه C:\Folder2 کپی کند :

کد:
Dim FS As New Scripting.FileSystemObject
FS.CopyFolder "C:\Folder1", "C:\Folder2"

استفاده از این کتابخانه از نظر کد نویسی ساده است ولی چند عیب مهم هم داره.
اولا اینکه نیازه که این کتابخانه حتما در کامپیوتری که برنامه را در آن اجرا می کنید نصب شده باشه.
ثانیا هیچ کنترلی روی عملیات ندارید و اگه کپی زمان زیادی طول بکشه برنامه شما قفل می کنه
و تا پایان عمل کپی باید بدون هیچ پیغامی کاربر را منتظر نگه دارید.

راه حل دوم استفاده از توابع API سیستم عامل است.
تابع SHFileOperation در API ویندوز برای انجام اینگونه عملیات مناسبتره.
من بر اساس این تابع دو توابع طراحی کردم با نامهای DirCopy و DirMove
فرق ایندو فقط در اینه که اولی پوشه را کپی می کند و دومی انتقال می دهد (Move)
حتی کد داخل آنها هم جز عبارت کلیدی Copy و Move در سایر موارد یکسان هستند.
کد:
[B]DirCopy[/B] ([B]Source[/B], [B]Destination[/B], [B][Silent][/B]) As Boolean
[B]DirMove[/B] ([B]Source[/B], [B]Destination[/B], [B][Silent][/B]) As Boolean
پارامتر Source مسیر مبدا را نشان می دهد و Destination مقصد را.
پارامتر Silent اختیاری است. اگر False باشد (حالت پیشفرض)، هنگام کپی یک پنجره استاندارد را نشان می دهد
که پیشرفت عمل کپی یا انتقال را همانند Explorer ویندوز به تصویر می کشد.
همچنین دکمه Cancel هم دارد و اگر در زمان کپی با نسخه دیگری از فایل در پوشه مقصد روبرو شود پیغام Overwrite
را نشان خواهد داد.
اگر پارامتر Silent را در وضعیت True قرار دهید، هیچ پیغامی به نمایش در نمی آید و در سکوت عملیات را انجام می دهد.
اگر عملیات این دو تابع موفقیت آمیز باشد، مقدار True را برمی گرداند.

مثلا :
کد:
DirCopy "C:\Folder1", "C:\Folder2"

در هر دو روش اگه پوشه مقصد وجود نداشته باشد، به صورت خودکار ایجاد خواهد شد.

برای استفاده از این دو تابع DirCopy و DirMove کافیست که فایل File.bas را ضمیمه پروژه تان نمایید.
کد دو تابع در داخل ماژول File.bas ضمیمه این پست می باشد.
 

پیوست ها

  • DirCopy.zip
    659 بایت · بازدیدها: 179
چطور میتونم در vb6 از یه فولدر و محتویاتش کپی بگیرم؟

سلام...
چطور میتونم در vb6 از یه فولدر و محتویاتش کپی بگیرم؟
(البته فکر کنم قبلا توضیح داده شده ولی نتونستم مبحث مربوطه رو پیدا کنم)
ممنون می شم اگه کمکم کنید...
 

the_king

مدیرکل انجمن

saalek110

Well-Known Member
دو تاپیک ادغام شد.
با تشکر از king عزیز.

لطفا قبل ایجاد تاپیک به روش زیر یا روشهای دیگر جستجو کنید:
کد:
کپی پوشه site:http://forum.majidonline.com

عبارت بالا را در گوگل جستجو کنید.
 

جدیدترین ارسال ها

بالا