Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> перенос .exe на другое место 
:(
    Опции темы
mvdr
Дата 14.7.2005, 05:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


физик
***


Профиль
Группа: Участник
Сообщений: 1349
Регистрация: 31.12.2004
Где: Волгоград, Россия

Репутация: 1
Всего: 42



задача: есть ехе"шник, его в процессе выполнения программы надо перенести на другое место.
Типа: есть файл: "A:\project1.exe" и "A:\project2.exe" , во время выполнения project1.exe файл project2.exe переносится на "C:111\project2.exe".

КАК?


--------------------
Появляюсь редко, но часто метко

Изображать идиота сложнее, чем изображать умного: полезнее и не каждому дано
PM ICQ   Вверх
Rrader
  Дата 14.7.2005, 06:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 70
Всего: 191



Это же простое копирование. smile Вот пример кода, который скопирует файл ASource в файл ADest, даже если он запущен. smile
Код

Procedure CopyFile(Const ASource, ADest: String);
Var
  S, S1: TStream;
Begin
  S := TFileStream.Create(ASource, fmOpenRead Or fmShareDenyWrite);
  Try
    S1 := TFileStream.Create(ADest, fmCreate Or fmShareDenyWrite);
    Try
      S1.CopyFrom(S, S.Size);
    Finally
      S1.Free;
    End;
  Finally
    S.Free;
  End;
End;

Procedure TForm1.Button1Click(Sender: TObject);
Begin
  CopyFile(ParamStr(0), 'C:/1.exe');
End;


Это сообщение отредактировал(а) Rrader - 14.7.2005, 06:25


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
bartram
Дата 14.7.2005, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

Репутация: 3
Всего: 29



Цитата(Femida @ 14.7.2005, 05:45)
перенести на другое место

Rrader, он сказал переместить, а ты скопировать предлагаешь smile


--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
Alex
Дата 14.7.2005, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Переместить не удастся, а вот скопировать пожалуйста


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Snowy
Дата 14.7.2005, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Скопировать, а со старого места удалить.
Ибо "Перенос" между двумя разными дисками невозможен.
PM MAIL   Вверх
Marriage
Дата 14.7.2005, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 4.5.2004
Где: Таганрог

Репутация: нет
Всего: 2



Можно написать программку, которая будет сначала копировать нужный ЕХЕ в папку, а потом по прошествии опр. времени грохать оригинал и закрываться. smile

Цитата
Ибо "Перенос" между двумя разными дисками невозможен."

Объясните мне , пжалуйста, как это такое ????
РАзвенельзя копировать между 2-мя разными дисками ...

Это сообщение отредактировал(а) Marriage - 14.7.2005, 10:53


--------------------
Praemonitus, praemunitus
PM MAIL ICQ   Вверх
Snowy
Дата 14.7.2005, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(Marriage @ 14.7.2005, 10:51)
Объясните мне , пжалуйста, как это такое ????
РАзвенельзя копировать между 2-мя разными дисками ...

копировать можно. Перенести нельзя.
Перенос возможен только в пределах одного диска.
В остальных случаях возможен только псевдоперенос: т.е. последовательность в виде сопирование, затем удаление.

Цитата(Marriage @ 14.7.2005, 10:51)
сначала копировать нужный ЕХЕ в папку, а потом по прошествии опр. времени грохать оригинал и закрываться.

Тогда не по прошествии определенного времени, а по окончании копирования.
Процедуру копирования тебе уже дали.
По ее завершении делай DeleteFile.
PM MAIL   Вверх
Marriage
Дата 14.7.2005, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 4.5.2004
Где: Таганрог

Репутация: нет
Всего: 2



Цитата(Snowy @ 14.7.2005, 10:59)
Тогда не по прошествии определенного времени, а по окончании копирования.


А времени хватит ????
Я имел ввиду подождать пока приложение закроется. Пока оно открыто, его никто не удалит ...




--------------------
Praemonitus, praemunitus
PM MAIL ICQ   Вверх
Snowy
Дата 14.7.2005, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(Marriage @ 14.7.2005, 14:18)
Я имел ввиду подождать пока приложение закроется. Пока оно открыто, его никто не удалит ...

Судя по изначальному вопросу, приложение1 должно перенести приложение2 на другой диск.
Там не сказано, что приложение2 в это время работает.
PM MAIL   Вверх
Marriage
Дата 14.7.2005, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 4.5.2004
Где: Таганрог

Репутация: нет
Всего: 2



Snowy
Ну я просто подумал может приложение 2 работает ...




--------------------
Praemonitus, praemunitus
PM MAIL ICQ   Вверх
Elfix
Дата 14.7.2005, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 13.7.2005

Репутация: нет
Всего: нет



Этот исходник я писал довольно давно, но думаю, что он еще не потерял своей "рабочей формы":
Код
procedure DeleteProgram;
var
 hFile: THandle;
 Buffer: String;
 nRead: Cardinal;
begin
 hFile:=CreateFile(PChar(ExtractFilePath(ParamStr(0))+'\DelExe.bat'), GENERIC_WRITE, FILE_SHARE_DELETE, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_HIDDEN, 0);
 Buffer:=':labl'#13#10'ERASE "'+ParamStr(0)+'"'#13#10'IF EXIST "'+ParamStr(0)+'" GOTO labl'#13#10'del DelExe.bat';
 CharToOem(PChar(Buffer), PChar(Buffer));
 WriteFile(hFile, Buffer[1], Length(Buffer), nRead, nil);
 CloseHandle(hFile);
 WinExec(PChar(ExtractFilePath(ParamStr(0))+'DelExe.bat'), sw_hide);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
 FuncParam: TSHFileOpStruct;
begin
 if CompareString(LOCALE_SYSTEM_DEFAULT, NORM_IGNORECASE, PChar(ParamStr(0)), Length(ParamStr(0)), PChar('C:\Project2.exe'), Length('C:\Project2.exe')) <> 2 then
  begin
   FillChar(FuncParam, SizeOf(FuncParam), 0);
   FuncParam.wFunc:=FO_COPY;
   FuncParam.pFrom:=PChar(ParamStr(0));
   FuncParam.pTo:=PChar('c:\project2.exe');
   FuncParam.fFlags:=FOF_NOCONFIRMMKDIR or FOF_NOCONFIRMATION;
   SHFileOperation(FuncParam);
   DeleteProgram;
   ExitProcess(0);
  end;
end;
Не забываем добавлять модуль ShellAPI
PM MAIL   Вверх
mvdr
Дата 15.7.2005, 02:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


физик
***


Профиль
Группа: Участник
Сообщений: 1349
Регистрация: 31.12.2004
Где: Волгоград, Россия

Репутация: 1
Всего: 42



Elfix, я так понял - это просто удаление?


--------------------
Появляюсь редко, но часто метко

Изображать идиота сложнее, чем изображать умного: полезнее и не каждому дано
PM ICQ   Вверх
Elfix
Дата 15.7.2005, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 13.7.2005

Репутация: нет
Всего: нет



Перед удалением идет проверка: откуда мы запущены. Если ответ на этот вопрос нас не удовлетворяет, мы копируем себя куда надо, даем запрос на удаление и завершаем свою работу. После завершения работы нас удаляет bat файл, а потом удаляется сам.
PM MAIL   Вверх
mvdr
Дата 15.7.2005, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


физик
***


Профиль
Группа: Участник
Сообщений: 1349
Регистрация: 31.12.2004
Где: Волгоград, Россия

Репутация: 1
Всего: 42



Цитата(Femida @ 14.7.2005, 06:45)
есть файл: "A:\project1.exe" и "A:\project2.exe" , во время выполнения project1.exe файл project2.exe переносится на "C:111\project2.exe"

Разве твое под это подходит?



--------------------
Появляюсь редко, но часто метко

Изображать идиота сложнее, чем изображать умного: полезнее и не каждому дано
PM ICQ   Вверх
Elfix
Дата 15.7.2005, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 13.7.2005

Репутация: нет
Всего: нет



Ну тогда все еще проще, просто копировать Project2 и удалять его.
PM MAIL   Вверх
mvdr
Дата 15.7.2005, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


физик
***


Профиль
Группа: Участник
Сообщений: 1349
Регистрация: 31.12.2004
Где: Волгоград, Россия

Репутация: 1
Всего: 42



э-э, только не смеятся: а как?


--------------------
Появляюсь редко, но часто метко

Изображать идиота сложнее, чем изображать умного: полезнее и не каждому дано
PM ICQ   Вверх
mvdr
Дата 15.7.2005, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


физик
***


Профиль
Группа: Участник
Сообщений: 1349
Регистрация: 31.12.2004
Где: Волгоград, Россия

Репутация: 1
Всего: 42



Хотя и это работает smile


--------------------
Появляюсь редко, но часто метко

Изображать идиота сложнее, чем изображать умного: полезнее и не каждому дано
PM ICQ   Вверх
Coder
Дата 17.7.2005, 03:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 13.12.2004

Репутация: 5
Всего: 11



Может проще и короче WinAPI функции?
CopyFile();
DeleteFile();
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1505 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.