Показать сообщение отдельно
  #1  
Старый 06.11.2011, 17:03
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию завершить программу зная имя процесса

здраствуйте.по сабжу поиском нашел много но всё не то...
я так понял мне надо узнать хендл процесса и послать команду завершения.
почти везде примеры идут с поиском по имени окна программы,а нужная мне прога сидит в трее,окна нет,только имя процесса.
на одном сайте нашел почти то что надо.но данный пример просто берет и завершает процесс (terminate) а мне надо както послать такую команду,как будто в программе нажали "выход".чтоб результат работы программы сохранился перед закрытием.
вот пример,может както поможете изменить его чутка?
Код:
uses Tlhelp32;
...
function KillTask(ExeFileName:string):integer;
const
PROCESS_TERMINATE=$0001;
var
Co:BOOL;
FS:THandle;
FP:TProcessEntry32;
begin
result:=0;
FS:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
FP.dwSize:=Sizeof(FP);
Co:=Process32First(FS,FP);
while integer(Co) <> 0 do
begin
if ((UpperCase(ExtractFileName(FP.szExeFile))=UpperCase(ExeFileName)) or
(UpperCase(FP.szExeFile)=UpperCase(ExeFileName))) then
Result:=Integer(TerminateProcess(OpenProcess(PROCESS_TERMINATE, BOOL(0),
FP.th32ProcessID),0));
Co:=Process32Next(FS,FP);
end;
CloseHandle(FS);
end;
Ответить с цитированием