Твой пример кода работает прекрасно. НО . В пути в проге (названия каталогов) и имя самой проги не должны содержать русские буквы.
P.S. Да и чуть не забыл : измени строку
winexec(Pchar(BatchFileName),sw_hide);
winexec(Pchar(‘cmd.exe /c ‘ + BatchFileName),sw_hide);
Хотя может и в исходном виде все заработает … Можно попробовать …
Dolphin705
Здесь всё работает
Похожие статьи
- Удалить программу после выполнения действий
- Как открыть свойства обозревателя программно?
- Запуск программы в определенное время
- Консольное приложение запускающее программу
- Как запустить программу указанную в Edit.Text
Купить рекламу на сайте за 1000 руб
Да и по любым другим вопросам пишите на почту
- Форум Web программирование (веб)
- Форум Python (питон)
- Форум PHP (пхп)
- Форум Perl (перл)
- Форум Ruby (руби)
- Форум JavaScript (яваскрипт)
- Форум Ajax (аякс)
- Форум SQL (эскюэл)
- Форум HTML (хтмл)
- Форум CSS (сиэсэс)
- Форум XML (иксмл)
- Форум JSON (джсон)
- Форум Pascal (паскаль)
- Форум Delphi (делфи)
- Форум C++ (си плюс плюс)
- Форум C++ Builder (си билдер)
- Форум Visual C++ (визуал си)
- Форум .NET (точка нет)
- Форум ASP.NET (асп нет)
- Форум Windows Forms (виндовс формс)
- Форум базы данных ADO.NET (адо нет)
- Форум .NET Framework WPF, UWP, WinRT, XAML ()
- Форум Java Android (джава андроид)
- Форум Java web (джава веб)
- Форум Kotlin (котлин)
- Форум Assembler (ассемблер)
- Форум WinApi (вин апи)
- Форум Excel (эксель)
- Форум Word (ворд)
- Форум Access (аксесс)
- Форум по администрированию ОС
- Форум по администрированию серверов и VDS
- Форум Windows
- Форум Ubuntu
- Форум Android
Источник: www.programmersclub.ru
КАК УДАЛИТЬ СЕБЯ ИЗ ИНТЕРНЕТА?
Как программе удалить саму себя
Delphi , Программа и Интерфейс , Приложение своё
Как программе удалить саму себя
Если вы решили удалить Windows, сделайте это медленно с удовольствием, побайтно. |
uses Windows, SysUtils; procedure DeleteMe; var BatchFile: TextFile; BatchFileName: string; ProcessInfo: TProcessInformation; StartUpInfo: TStartupInfo; begin BatchFileName := ExtractFilePath(ParamStr(0)) + ‘$$336699.bat’; AssignFile(BatchFile, BatchFileName); Rewrite(BatchFile); Writeln(BatchFile, ‘:try’); Writeln(BatchFile, ‘del «‘ + ParamStr(0) + ‘»‘); Writeln(BatchFile, ‘if exist «‘ + ParamStr(0) + ‘»‘ + ‘ goto try’); Writeln(BatchFile, ‘del «‘ + BatchFileName + ‘»‘); CloseFile(BatchFile); FillChar(StartUpInfo, SizeOf(StartUpInfo), $00); StartUpInfo.dwFlags := STARTF_USESHOWWINDOW; StartUpInfo.wShowWindow := SW_HIDE; if CreateProcess(nil, PChar(BatchFileName), nil, nil, False, IDLE_PRIORITY_CLASS, nil, nil, StartUpInfo, ProcessInfo) then begin CloseHandle(ProcessInfo.hThread); CloseHandle(ProcessInfo.hProcess); end; end;
А вот тот же способ, но немного модифицированный: program delete2; uses SysUtils, windows; var BatchFile: TextFile; BatchFileName: string; TM: Cardinal; TempMem: PChar; begin BatchFileName:=ExtractFilePath(ParamStr(0))+ ‘$$336699.bat’; AssignFile(BatchFile, BatchFileName); Rewrite(BatchFile); Writeln(BatchFile,’:try’); Writeln(BatchFile,’del «‘ + ParamStr(0) + ‘»‘); Writeln(BatchFile,’if exist «‘ + ParamStr(0) + ‘» goto try’); Writeln(BatchFile,’del «‘ + BatchFileName + ‘»‘); CloseFile(BatchFile); TM:=70; GetMem (TempMem,TM); GetShortPathName (pchar(BatchFileName), TempMem, TM); BatchFileName:=TempMem; FreeMem(TempMem); winexec(Pchar(BatchFileName),sw_hide); halt; end. Статья Как программе удалить саму себя раздела Программа и Интерфейс Приложение своё может быть полезна для разработчиков на Delphi и FreePascal. Комментарии и вопросы:: 2010-02-11 02:31:37 :: re:Как программе удалить саму себяСпособ с CreateProcess работает отлично на современных виндах, но есть одна проблема. Программа оставляет за собой «мусор» в виде сообственной директории. Я перенес создание бат-ника в директорию на уровень выше. И указал CreateProcess 8-й параметр вместо nil (Manual: if this parameter is NULL, the new process will have the same current drive and directory as the calling process), другую существующую директорию. Но все равно чтото еще держит и не дает убить эту 🙁 Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. Источник: www.kansoftware.ru Как программе удалить саму себяСообщений: 213 Как программе удалить саму себя? Здраствуйте, моя задача программно удалить себя, в поисковике нашёл несколько примеров uses Windows, SysUtils; procedure DeleteMe; var BatchFile: TextFile; BatchFileName: string; ProcessInfo: TProcessInformation; StartUpInfo: TStartupInfo; begin < создаём бат-файл в директории приложения >BatchFileName := ExtractFilePath(ParamStr(0)) + ‘$$336699.bat’; < открываем и записываем в файл >AssignFile(BatchFile, BatchFileName); Rewrite(BatchFile); Writeln(BatchFile, ‘:try’); Writeln(BatchFile, ‘del «‘ + ParamStr(0) + ‘»‘); Writeln(BatchFile, ‘if exist «‘ + ParamStr(0) + ‘»‘ + ‘ goto try’); Writeln(BatchFile, ‘del «‘ + BatchFileName + ‘»‘); CloseFile(BatchFile); FillChar(StartUpInfo, SizeOf(StartUpInfo), $00); StartUpInfo.dwFlags := STARTF_USESHOWWINDOW; StartUpInfo.wShowWindow := SW_HIDE; if CreateProcess(nil, PChar(BatchFileName), nil, nil, False, IDLE_PRIORITY_CLASS, nil, nil, StartUpInfo, ProcessInfo) then begin CloseHandle(ProcessInfo.hThread); CloseHandle(ProcessInfo.hProcess); end; end; проблема в том, что ни один код не работает. Источник: www.programmersforum.ru |