vrnRaptor

Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору lerik2703 Цитата: одно но, имя процесса исполняемого файла во временной папке autorun.exe, для того чтобы убить процесс SFX измени имя архива на любое другое например autorаn.exe!(имя файла = имени процессу. для справки) | В свойствах процесса можно увидеть путь из которого он запущен, по нему можно различить какой процесс надо убить. у меня получилось вот так: Код: Global Functions: function GetSFXPath() strPath = ""; strArg = _CommandLineArgs[1]; if strArg then strPath = String.Right(strArg, String.Length(strArg) - 10); end if (String.Length(strPath) > 0) then tblPath = String.SplitPath(strPath); strPath = tblPath.Drive..tblPath.Folder; end return strPath; end On Show: mySourceFolder = GetSFXPath(); processes = System.EnumerateProcesses(); for j, file_path in processes do file = String.SplitPath(file_path); if (String.Lower(file.Drive..file.Folder..file.Filename..file.Extension)) == (String.Lower(mySourceFolder.."autorun.exe")) then System.TerminateProcess(j); end end -- Чистим темп от предыдущих запусков for num = 0, 100 do -- Если такая папка существует, и если это не рабочая папка if (Folder.DoesExist(_TempFolder.."\\ir_ext_temp_"..num) == true) and _TempFolder.."\\ir_ext_temp_"..num ~= _SourceFolder then Folder.Delete(_TempFolder.."\\ir_ext_temp_"..num); -- Проверка на наличие ошибки при удалении error = Application.GetLastError(); -- Если папка не удалилась в результате ошибки 2203 if error == 2203 then -- Удаляем все файлы которые находятся в папке File.Delete(_TempFolder.."\\ir_ext_temp_"..num.."\\*.*", true, false, false, nil); -- Удаляем пустую папку Folder.Delete(_TempFolder.."\\ir_ext_temp_"..num); end end end | P.S. Если код поместить не в секцию On Show, а в секцию On Timer, тогда предотвращается повторный запуск проекта. | Всего записей: 18 | Зарегистр. 10-12-2009 | Отправлено: 11:32 23-01-2010 | Исправлено: vrnRaptor, 00:29 25-01-2010 |
|