Використання стандартних операцій копіювання і перенесення файлів

vbCode

Дана стаття пояснює, як вставити стандартний діалог копіювання у ваше застосування за допомогою деяких корисних функцій API бібліотеки Shell32.dll.

Declarations

Скопіюйте нижченаведений код у розділ декларацій вашої форми:

Private Type SHFILEOPSTRUCT

        hwnd As Long

        wFunc As Long

        pFrom As String

        pTo As String

        fFlags As Integer

        fAnyOperationsAborted As Long

        hNameMappings As Long

        lpszProgressTitle As Long

End Type



Private Declare Function SHFileOperation Lib _

"shell32.dll" Alias "SHFileOperationA" _

(lpFileOp As SHFILEOPSTRUCT) As Long



Private Const FO_MOVE = &H1

Private Const FO_COPY = &H2

Private Const FOF_SILENT = &H4

Private Const FOF_RENAMEONCOLLISION = &H8

Code

Тепер, якщо вам, наприклад, потрібно скопіювати файл "autoexec.bat" з диска C: \ на диск A: \, то скористайтеся наступним кодом:

Dim ShellCall As SHFILEOPSTRUCT



ShellCall.hwnd = hwnd

ShellCall.wFunc = FO_COPY

ShellCall.pFrom = "c:\autoexec.bat"

ShellCall.pTo = "a:\autoexec.bat"

ShellCall.hNameMappings = 0



Call SHFileOperation(ShellCall)

Запустивши додаток ви побачите діалогове вікно, подібно до цього:

Наведений приклад містить кілька рядків коду і досить простий. Спробуємо уявити більш складну ситуацію і зробимо деякі зміни. Припустимо, що на диску A: \ вже є файл "autoexec.bat", тоді перед операцією копіювання ви побачите таке повідомлення:

Якщо ви натиснете "yes" (переписати файл) – існуючий файл на диску A: \ буде замінений новою версією. Якщо ви натиснете "No" – операція копіювання буде скасована.

Додавши наступний рядок коду ви зможете уникнути цього діалогового вікна "yes / no" і ваш додаток у разі існування однойменного файла створить новий файл з ім'ям, що починається з "Copy of":

 ShellCall.fFlags = FOF_RENAMEONCOLLISION 

Для перенесення файлів замініть константу "FO_COPY" на "FO_MOVE", тоді файл буде перенесено на диск A: \.

[За матеріалами James Limm About.com]

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*