|
|
|||||||||||||||||||||||||||||
|
Решение задач: как программе удалить саму себя или как изменить название исполняемого файлаИсточник: pblog Crivel
Введение В интернете просматривая форумы по программированию я наталкивался на вопросы связанные c вопросом "Как программу заставить удалить или переименовать себя во время исполнения". В этой статье описывается самый элементарный способ. Что нужно? Borland Delphi желательно 7 - требует установки Начинаем Зачем нам нужен блокнот и cmd.exe спросите вы? function RemoveApp : boolean; var batfile : TextFile; // переменная файла begin try // блок try..except для обработки исключений (ошибок) RemoveApp := true; // в результат возвращаемой функции ставим значение: истина AssignFile(batfile,'Del.bat'); // присваиваем файл переменной ReWrite(batfile); // Открываем для перезаписи (если существует файл перезапишится, иначе создастся) ChDir(ExtractFilePath(ParamStr(0))); // меняем текущую директорию (с которой работает программа) на директорию в которой находится исполняемый файл WriteLn(batfile,'del '+ExtractFileName(ParamStr(0))); // записываем в файл команду удаления del WriteLn(batfile,'del Del.bat'); // пишем это для самоуничтожения пакетного файла CloseFile(batfile); // закрываем файл WinExec('Del.bat',SW_SHOW); // запускаем пакетный файл который был создан программой ExitProcess(0); // завершаем программу except RemoveApp := false; // если происходит ошибка возвращаем ложь end; end; Функция для переименования: function RenameApp(newname : string) : boolean; var batfile : TextFile; // переменная файла begin try // блок try..except для обработки исключений (ошибок) RenameApp := true; // в результат возвращаемой функции ставим значение: истина AssignFile(batfile,'Rem.bat'); // присваиваем файл переменной ReWrite(batfile); // Открываем для перезаписи (если существует файл перезапишется, иначе создастся) ChDir(ExtractFilePath(ParamStr(0))); // меняем текущую директорию (с которой работает программа) на директорию в которой находится исполняемый файл WriteLn(batfile,'ren '+ExtractFileName(ParamStr(0))+' '+newname); // записываем в файл команду переименовывание ren WriteLn(batfile,'del Rem.bat'); // пишем это для самоуничтожения пакетного файла CloseFile(batfile); // закрываем файл WinExec('Rem.bat',SW_SHOW); // запускаем пакетный файл который был создан программой ExitProcess(0); // завершаем программу except RenameApp := false; // если происходит ошибка возвращаем ложь end; end; Заключение Как видите ничего сложного тут нет. Эти функции не требуют ни каких дополнительных модулей. Конец Если будут какие то проблемы, непонятки то пишите в комментарии. С удовольствием отвечу. Желаю вам успеха в программировании! Ссылки по теме
Файлы для загрузки
|
|