![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Всем привет! Помогите пожалуйста с задачей копирования файлов на рабочий стол.
Цель: 1. Определить папку Windows 2. Определить папку Рабочий Стол ( независимо от ОС/языка Windows ) 3. По нажатии на бутон1 скопировать из Windows/system32/taskmgr.exe на Рабочий стол саму утилитку taskmgr.exe |
#2
|
||||
|
||||
![]() jmp $ ; Happy End! The Cake Is A Lie. |
#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)
|