Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];




Вниз

kill process 


avk   (2002-02-13 21:40) [0]

смотрим какие процессы загружены, доюавляем их в ListBox

procedure TForm1.Button1Click(Sender: TObject);
VAR Wnd : hWnd;
buff: ARRAY [0..127] OF Char;
begin
ListBox1.Clear;
Wnd := GetWindow(Handle, gw_HWndFirst);
WHILE Wnd <> 0 DO BEGIN
IF (Wnd <> Application.Handle) AND IsWindowVisible(Wnd)
AND (GetWindow(Wnd, gw_Owner) = 0)
AND (GetWindowText(Wnd, buff, sizeof(buff)) <> 0) THEN BEGIN
GetWindowText(Wnd, buff, sizeof(buff));
ListBox1.Items.Add(StrPas(buff));
END;
Wnd := GetWindow(Wnd, gw_hWndNext);
END;
ListBox1.ItemIndex := 0;
end;

Потом выбираем нужный и нажимаем на кнопку KILL.
а вот что писать в процедуре нажатия кнопки KILL ничего не понял...все FAQ прочитал так и не дошло...подскажите плиз..если можно то рабочи код вывесети..



Anonymous   (2002-02-14 01:12) [1]

http://rsdn.ru/?qna/?baseserv/killproc.xml (C++)



avk   (2002-02-14 12:26) [2]

в теории все вроде понятно...но там на C++
..а есть ли на Delphi



Fellomena   (2002-02-14 12:34) [3]

Я делала следующим образом: при получении инфы о всех процессах, полную инфу о каждом сохраняла в структуре, а структуру добавляла в список типаTList.
Потом, когда надо было "убить" процесс, делала что-то типа такого:

for i:=0 to ListBox1.Items.Count do
begin
if ListBox1.Items[i].Selected then // тут могу наврать - пишу по памяти
MyVar:= MyListOfProcStruct[i];
SendMessage(MyVar^.Handle, WM_QUIT, 0, 0); // на самом деле убивала подругому, но как - не помню, если сам не разберёшься - пришлю рабочий пример.



Bachin   (2002-02-14 13:27) [4]

это KILL :)

program kill;
{$APPTYPE CONSOLE}
uses
Windows, SysUtils, Messages;
var
h: THandle;
p: PChar;
begin
if ParamCount = 0 then
begin
WriteLn("kill processID");
Halt(0);
end;

try
h := StrToInt(ParamStr(1));
except
WriteLn("wrong parameter");
Halt(0);
end;

getmem(p, 201);
try
GetWindowText(h, p, 200);
if length(trim(string(p))) > 0 then
begin
WriteLn(Format("close window %d %s", [h, string(p)]));
SendMessage(h, WM_CLOSE, 0, 0);
WriteLn(Format("kill process %d %s", [h, string(p)]));
DestroyWindow(h);
end
else
WriteLn(Format("unknown processID %d", [h]));
finally
freemem(p);
end;
end.



Milz   (2002-02-14 16:09) [5]

При просмотре окон запоминать WindowHandle, например вместо
ListBox1.Items.Add(StrPas(buff));
применять
ListBox1.Items.AddObject(StrPas(buff),tObject(Wnd));

На кнопку KILL несколько вариантов:

1. Говорит окну приложения завершить работу
PostMessage(WindowHandle, WM_QUIT, 0, 0);

2. Завершить процесс, который вызвал данное окно
GetWindowThreadProcessID(WindowHandle, @ProcessID);
ProcessHandle := OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);
TerminateProcess(ProcessHandle,4);


3. Окошко "Программа выполнила недопустимую операцию ..." (сори, не помню кто это писал)

function EndTask(Wnd: HWND; PrID: DWORD; Title: PChar; Flags: DWORD): DWORD; stdcall; external "user32.dll";

Wnd - ссылка на окно, процесс которого нужно завершить
PrID - идентификатор процесса, который нужно завершить
( используется либо Wnd либо PrID. Преимущество отдается Wnd)
Title - используется если не задан Wnd, а задан PrID. Этот текст выводится в заголовке системного окна "Приложение не реагирует ... " Если же задана ссылка на окно Wnd, то используется заголовок окна, а этот параметр игнорируется.
Flags =
0 - Выводится системное окно "Приложение не реагирует на системные запросы ... " с кнопками "Завершить задачу" и "Отменить"
1 - Выводится системное окно "Приложение не реагирует на системные запросы ... " с кнопками "Подождать", "Завершить задачу" и "Отменить"
>1 - Ничего не выводится, нриложение завершается.

Возвращаемое значение:
0 - Ошибка в параметрах
2 - Пользователь нажал "Отмена" или такого процесса/окна не существует.
3 - Процесс успешно завершен.
4 - Пользователь нажал кнопку "Подождать"







Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.022 c
3-46223           interest              2002-03-20 08:51  2002.04.15  
Таблицы всегда с приложением.


14-46490          VID                   2002-03-07 00:12  2002.04.15  
ДРОВА


1-46434           Alex_Sudakov          2002-04-02 22:17  2002.04.15  
SP2


7-46526           Red Alert             2002-01-13 08:01  2002.04.15  
Блин! Во в голову вдарило-то! Вопрос про Com-порт..


6-46461           Vlad__                2002-01-31 15:38  2002.04.15  
ICS компоненты ( сокеты )