Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.12.2013, 19:40
Slackerok Slackerok вне форума
Прохожий
 
Регистрация: 27.11.2012
Сообщения: 20
Репутация: 10
По умолчанию Скопировать файлы на рабочем столе

Всем привет! Помогите пожалуйста с задачей копирования файлов на рабочий стол.

Цель:

1. Определить папку Windows
2. Определить папку Рабочий Стол ( независимо от ОС/языка Windows )
3. По нажатии на бутон1 скопировать из Windows/system32/taskmgr.exe на Рабочий стол саму утилитку taskmgr.exe
Ответить с цитированием
  #2  
Старый 11.12.2013, 20:23
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Так трудно погуглить?
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #3  
Старый 12.12.2013, 17:51
Slackerok Slackerok вне форума
Прохожий
 
Регистрация: 27.11.2012
Сообщения: 20
Репутация: 10
По умолчанию

Вы конечно извините, но думаю я бы не обратился за помощью перед этим не погуглив, нашел рабочий код в инете, но там надо указывать реальный путь от и до. Для моих знаний моя цель сложновата...

Код:
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:\windows\system32\taskmgr.exe') + 1;
  FillChar(Fo, sizeof(Fo), #0);
  Fo.Wnd := Handle;
  Fo.wFunc := FO_COPY;
  Fo.pFrom := @Buffer;
  Fo.pTo := 'C:\';
  Fo.fFlags := 0;
  if ((SHFileOperation(Fo) <> 0) or (Fo.fAnyOperationsAborted <> false)) then
    ShowMessage('Cancelled')
end;

Осталось задача определить папку Windows перед копированием и определить папку Рабочий Стол.
Код:
GetWindowsDirectory(WinDir, 255);

Код:
begin
  FillChar(Buffer, sizeof(Buffer), #0);
  p := @buffer;
  GetWindowsDirectory(WinDir, 255);
  p := StrECopy(p, 'system32\taskmgr.exe') + 1;
  FillChar(Fo, sizeof(Fo), #0);
  Fo.Wnd := Handle;
  Fo.wFunc := FO_COPY;
  Fo.pFrom := @Buffer;
  Fo.pTo := 'C:\';
  Fo.fFlags := 0;
Так будет правильно?

Последний раз редактировалось Slackerok, 12.12.2013 в 18:00.
Ответить с цитированием
  #4  
Старый 12.12.2013, 18:27
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от Slackerok
Для моих знаний моя цель сложновата

ну для изучения можно было попроще задание выбрать

Код:
uses
  ShellAPI, ShlObj, ActiveX, 
...
function GetSpecialFolderLocation(Folder: Integer): String;
var
  ppidl: PItemIDList;
begin
  Result:='';
  ppidl:=nil;
  try
    if SHGetSpecialFolderLocation(0, Folder, ppidl)=S_OK then
    begin
      SetLength(Result, MAX_PATH);
      if SHGetPathFromIDList(ppidl, PChar(Result)) then
        Result:=IncludeTrailingPathDelimiter(PChar(Result))
      else
        Result:='';
    end;
  finally
    if ppidl<>nil then CoTaskMemFree(ppidl);
  end;
end;

var
  Buffer: array [0..MAX_PATH] of Char;
  Len: Integer;
  DesktopDir: String;
  WindowsDirectory: String;
begin
  DesktopDir:=GetSpecialFolderLocation(CSIDL_DESKTOPDIRECTORY);
  Len:=GetWindowsDirectory(@Buffer[0], MAX_PATH); 
  WindowsDirectory:=IncludeTrailingPathDelimiter(Copy(Buffer, 1, Len));
  CopyFile(PChar(WindowsDirectory+'System32\taskmgr.exe'),
    PChar(DesktopDir+'taskmgr.exe'), False);
end;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
Slackerok (12.12.2013)
  #5  
Старый 12.12.2013, 20:46
Slackerok Slackerok вне форума
Прохожий
 
Регистрация: 27.11.2012
Сообщения: 20
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
ну для изучения можно было попроще задание выбрать

Больше склоняюсь к тому чтобы начать изучать коды с более сложной структурой, есть что анализировать) Спасибо вам огромное! Код отлично работает! С наступающим всех ребята, и много удачи, любви в Новом Году!
Ответить с цитированием
Этот пользователь сказал Спасибо Slackerok за это полезное сообщение:
Mrak (13.12.2013)
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:14.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025