Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.15;
Скачать: CL | DM;

Вниз

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 - Пользователь нажал кнопку "Подождать"







Страницы: 1 вся ветка

Текущий архив: 2002.04.15;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.007 c
1-46383
Chainik
2002-04-02 09:57
2002.04.15
Помогите с переносом данных из DBGrid в Excel :((


3-46287
gimbat
2002-03-25 22:47
2002.04.15
D5, MS SQL7


3-46253
Orion
2002-03-24 16:13
2002.04.15
Отображение данных из нескольких DataSet ов одновременно.


4-46541
Poirot
2002-02-07 02:54
2002.04.15
Как вставить в системное меню POPUP....


1-46400
dimonf
2002-04-01 20:46
2002.04.15
Господа программисты, можно ли в QuickReport засунуть данные из S