![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Всем привет! Помогите пожалуйста с задачей копирования файлов на рабочий стол.
Цель: 1. Определить папку Windows 2. Определить папку Рабочий Стол ( независимо от ОС/языка Windows ) 3. По нажатии на бутон1 скопировать из Windows/system32/taskmgr.exe на Рабочий стол саму утилитку taskmgr.exe |
|
#2
|
||||
|
||||
|
|
|
#3
|
|||
|
|||
|
Вы конечно извините, но думаю я бы не обратился за помощью перед этим не погуглив, нашел рабочий код в инете, но там надо указывать реальный путь от и до. Для моих знаний моя цель сложновата...
Код:
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
|
||||
|
||||
|
Цитата:
ну для изучения можно было попроще задание выбрать ![]() Код:
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
|
|||
|
|||
|
Цитата:
Больше склоняюсь к тому чтобы начать изучать коды с более сложной структурой, есть что анализировать) Спасибо вам огромное! Код отлично работает! С наступающим всех ребята, и много удачи, любви в Новом Году! |
| Этот пользователь сказал Спасибо Slackerok за это полезное сообщение: | ||
Mrak (13.12.2013)
| ||