InfoCity
InfoCity - виртуальный город компьютерной документации
Реклама на сайте







Размещение сквозной ссылки

 

Использование стандартных операций копирования и переноса файлов


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]


Реклама на InfoCity

Яндекс цитирования



Финансы: форекс для тебя








1999-2009 © InfoCity.kiev.ua