| ||||||||||||||||
![]() | ||||||||||||||||
| ||||||||||||||||
![]() | ||||||||||||||||
| ||||||||||||||||
![]() |
Использование стандартных операций копирования и переноса файлов Данная статья объясняет, как вставить стандартный диалог копирования в ваше приложение при помощи некоторых полезных функций 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] |
|
![]() | ||||||||||||||||
| ||||||||||||||||
![]() | ||||||||||||||||
|