Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Помогите понять код


Автор: Dzeu 21.3.2012, 11:43
Код


procedure KillProgram(Classname : string; WindowTitle : string);
const
PROCESS_TERMINATE = $0001;
var
ProcessHandle : THandle;
ProcessID: Integer;
TheWindow : HWND;
begin
TheWindow := FindWindow(Classname, WindowTitle);
GetWindowThreadProcessID(TheWindow, @ProcessID);
ProcessHandle := OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);
TerminateProcess(ProcessHandle,4);
end;



Нашел вот эту процедуру для уничтожения процессов.
После begin в первой строчке кода находится для обработки окно с шапкой WindowTitle и формой Classname (допустим Tfrom1). Во второй строчке кода находится айди выбранного процесса. Это все что я мог понять из кода.
Что происходит в остальных двух строчках??? Я еще зеленый в кодинге, помогите =3

Автор: LegionnaireFH 21.3.2012, 12:06
ProcessHandle - идентификатор ресурса, в данном случае описывает процесс (видимо, который может быть уничтожен), содержит его параметры и т.д.  Исходя из определения THandle в справке Delphi: THandle is a 32-bit value that uniquely identifies a resource. TerminateProcess - соответственно, само уничтожение процесса. Как то так.

Автор: Snowy 21.3.2012, 12:26
1. Найти окно по заголовку / классу
2. Получить ID процесса, которому принадлежит это окно
3. Получить доступ к процессу по ID с запросом прав на уничтожение.
4. Уничтожить процесс

Автор: Dzeu 21.3.2012, 13:13
LegionnaireFH, Snowy, спасибо. А цифра 4 в TerminateProcess означает код команды уничтожения процесса?

Автор: Snowy 21.3.2012, 16:06
Цифра 4 - это ExitCode
Обычно не имеет значения и равна нулю.
У тебя разве F1 не работает?

Автор: Dzeu 21.3.2012, 18:05
Цитата(Snowy @ 21.3.2012,  16:06)
Цифра 4 - это ExitCode
Обычно не имеет значения и равна нулю.
У тебя разве F1 не работает?

Спасибо. Я про F1 не знал, ровно как и про базу помощи Delphi. Как я и говорил, мне еще многое предстоит узнать =)
Спасибо вам за помощь!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)