Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2008, 00:48   #1
AlexRastr
 
Регистрация: 02.10.2008
Сообщений: 7
По умолчанию "Стандартное" копирование

Как заставить Windows копировать/переместить файл/файлы со стандартным windows'ким окном отображающим процес копирования/вставки?
P.S
я имею в виду не эмуляцию нажатия клавиш
AlexRastr вне форума Ответить с цитированием
Старый 03.10.2008, 02:21   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
Сообщение от AlexRastr Посмотреть сообщение
Как заставить Windows копировать/переместить файл/файлы со стандартным windows'ким окном отображающим процес копирования/вставки?
P.S
я имею в виду не эмуляцию нажатия клавиш
Можете сделать так:

Код:
Uses
  ShellApi,...

Function CopyDir(Const FromDir, ToDir: String): Boolean;
Var
Fos: TSHFileOpStruct;
Begin
ZeroMemory(@fos, SizeOf(Fos));
With Fos Do
Begin
WFunc:=FO_COPY;
FFlags:=FOF_FILESONLY;
PFrom:=PChar(FromDir + #0);
PTo:=PChar(toDir)
End;
Result := (0 = ShFileOperation(fos));
End;

function MoveDir(const fromDir, toDir: string): Boolean; 
var
  fos: TSHFileOpStruct; 
begin 
  ZeroMemory(@fos, SizeOf(fos)); 
  with fos do 
  begin 
    wFunc  := FO_MOVE; 
    fFlags := FOF_FILESONLY; 
    pFrom  := PChar(fromDir + #0); 
    pTo    := PChar(toDir) 
  end; 
  Result := (0 = ShFileOperation(fos)); 
end;

function DelDir(dir: string): Boolean; 
var 
  fos: TSHFileOpStruct; 
begin 
  ZeroMemory(@fos, SizeOf(fos)); 
  with fos do 
  begin 
    wFunc  := FO_DELETE; 
    fFlags := FOF_SILENT or FOF_NOCONFIRMATION; 
    pFrom  := PChar(dir + #0); 
  end;
  Result := (0 = ShFileOperation(fos)); 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  if cCopyDir('d:\1', 'e:\') = True then 
    ShowMessage('Directory copied.'); 
end;
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 03.10.2008, 09:40   #3
AlexRastr
 
Регистрация: 02.10.2008
Сообщений: 7
По умолчанию

СБАСИБО
Нигде не мог найти энту функцию
AlexRastr вне форума Ответить с цитированием
Старый 16.10.2008, 05:20   #4
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

Я начинающий, поэтому нельзя ли построчно разобрать одну из функций. Потомучто у меня есть другая функция , а в ней нет отображения хода копирования хочу вставить. И возможно ли создать свою полосу прогресса, если да то посоветуйте как.
tarakan1983 вне форума Ответить с цитированием
Старый 16.10.2008, 08:25   #5
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Цитата:
procedure TForm1.Button1Click(Sender: TObject);
begin
if cCopyDir('d:\1', 'e:\') = True then
ShowMessage('Directory copied.');
end;
Позволю себе указать на ошибку... функция не cCopyDir, a CopyDir
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 16.10.2008, 09:33   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Файловые операции с использованием стандартного диалога с анимацией

В следующем примере используется функция SHFileOperation для копирования группы файлов и показа анимированного диалога. Вы можете использовать также следующие флаги для копирования, удаления, переноса и переименования файлов. TO_COPY, FO_DELETE, FO_MOVE, FO_RENAME.
Примечание: буфер, содержащий имена файлов для копирования должен заканчиваться двумя нулевыми символами.
Код:
uses ShellAPI;

procedure TForm1.Button1Click(Sender: TObject); 
var 
  Fo      : TSHFileOpStruct; 
  buffer  : array[0..4096] of char; 
  p       : pchar; 
begin 
  FillChar(Buffer, sizeof(Buffer), #0); 
  p := @buffer; 
  p := StrECopy(p, 'C:\DownLoad\1.ZIP') + 1; 
  p := StrECopy(p, 'C:\DownLoad\2.ZIP') + 1; 
  p := StrECopy(p, 'C:\DownLoad\3.ZIP') + 1; 
  StrECopy(p, 'C:\DownLoad\4.ZIP'); 
  FillChar(Fo, sizeof(Fo), #0); 
  Fo.Wnd    := Handle; 
  Fo.wFunc  := FO_COPY; 
  Fo.pFrom  := @Buffer; 
  Fo.pTo    := 'D:\'; 
  Fo.fFlags := 0; 
  if ((SHFileOperation(Fo) <> 0) or
    (Fo.fAnyOperationsAborted <> false)) then
    ShowMessage('Cancelled') 
end;
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при использовании OlePropertyGet("Documents").OleProcedure("Add") в C++ Builder AleksP C++ Builder 7 11.04.2009 13:06
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 06:51
Excel файл открывается не "до конца" (странички "не показываются" только серое поле) Dorvir Microsoft Office Excel 2 28.03.2008 10:03
Создаю диаграмму "Bar". Подскажите как убрать растояние между "столбами" MAcK Компоненты Delphi 11 24.10.2007 10:49