lerik2703
Цитата:
В свойствах процесса можно увидеть путь из которого он запущен, по нему можно различить какой процесс надо убить.
у меня получилось вот так:
Код: 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
Цитата:
одно но, имя процесса исполняемого файла во временной папке 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