|
Вопрос # 6 181/ вопрос решён / |
|
Здравствуйте, эксперты!
Помогите реализовать следующее:
Данная функция убивает процессы по имени файла с расширением. Как сделать, что-бы данная функция считывала имя файла для убития из определённого файла на диске например project.ini и затем убивала данный процесс?
Приложение: Переключить в обычный режим- function KillTask(ExeFileName:String):integer;
- const Process_Terminate=$0001;
- var ContinueLoop:BOOL;
- FSnapShotHandle:THandle;
- FProcessEntry32:TProcessEntry32;
- begin
- result:=0;
- FSnapShotHandle:=CreateToolHelp32SnapShot(TH32CS_SnapProcess,0);
- FProcessEntry32.dwSize:=SizeOf(FProcessEntry32);
- continueLoop:=Process32First(FSnapShotHandle,FProcessEntry32);
- while integer(continueloop)<>0 do
- begin
- if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile))= UpperCase(ExeFileName))
- or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then
- Result:=Integer(TerminateProcess(OpenProcess(Process_TERMINATE,bool(0),
- FProcessEntry32.th32ProcessID),0));
- ContinueLoop:=Process32Next(FSnapShotHandle,FProcessEntry32);
- end;
- CloseHandle(FSnapShotHandle);
- end;
-
- procedure TProcessKil.FormCreate(Sender: TObject);
- begin
- KillTask('SecyrityKey.exe');
-
- end;
 |
Вопрос задал: Халитов Р.Ш (статус: 1-ый класс)
Вопрос отправлен: 4 июня 2012, 00:15
Состояние вопроса: решён, ответов: 1.
|
Ответ #1. Отвечает эксперт: min@y™
Ну, допустим, файл project.ini выглядит вот так:
[ToKill]
process=SecyrityKey.exe
Тогда для чтения можно написать такую фунцию:
function GetKillProcName: string;
var
Ini: TIniFile;
begin
Ini:= TIniFile.Create('project.ini');
try
Result:= Ini.ReadString('ToKill', 'process', '');
finally
Ini.Free();
end;
end;
Если в ini-файле требуется хранить несколько имён файлов процессов, подлежащих убиению, например:
[ToKill]
Count=3
process0=SecyrityKey.exe
process1=iexplore.exe
process2=wmplayer.exe
то функцию можно написать более другую :)
procedure GetKillProcNames(ANames: TStrings);
var
Ini: TIniFile;
Index, Count: Integer;
begin
Ini:= TIniFile.Create('project.ini');
ANames.Clear();
try
Count:= Ini.ReadInteger('ToKill', 'Count', 0);
for Index:= 0 to Count - 1 do
ANames.Add(Ini.ReadString('ToKill', 'process' + InToStr(Index), ''));
finally
Ini.Free();
end;
end;
Ну, вот, как-то так...
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 4 июня 2012, 08:21
Оценка за ответ: 5
Комментарий к оценке: Спасибо большое за ответ!
Супер!!!
|
Мини-форум вопроса
Всего сообщений: 0.
4 июня 2012, 11:50: Статус вопроса изменён на решённый (изменил модератор DNK)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|