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

Вниз

Игровой клуб   Найти похожие ветки 

 
Sword-Fish ©   (2003-09-28 23:58) [0]

Добрый вечер, уважаемые знатоки !!!
Я открыл игровой клуб и пишу программу для администрирования и у меня возник небольшой вопрос !!!
У меня на "клиентах" стоит таймер и когда он срабатывает надо закрыть все процессы кроме моего. Как моно это осуществить ???
Моя программа работает вместо шела, т.е вместо Explorer.exe !!!


 
jonni ©   (2003-09-29 02:34) [1]

ochen" prosto .... perebiray vse processi v sisteme i esli oni ne sistemnie in etvoy to zakrivay ih....... vot i vse

PS: molodoy ti odnako dlya otkritiya.. a esli dazhe i otkril naydi normal"nogo programera kotoriy tebe horoshuyu programku sdelaet... kazhdiy dolzhen zanimat"sya svoim.....


 
Opuhshii   (2003-09-29 15:24) [2]

2Sword-Fish © (28.09.03 23:58)
"Я открыл игровой клуб и пишу программу для администрирования "....

а 10 вшивых убитых енота слабо заплатить,... уж этих программ за 10$ писано-переписано,...
ну может 20,...


 
(3223)jab   (2003-09-29 16:16) [3]

Это как и говорили просто...
Для этого тебе нужно перебрать все процессы... а именно:

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;

Как видиш по клику на баттон ты получиш в листбоксе список всех окон в системе. Это тебе для разогрева! Куда это присобачить тебе виднее... Далее тебе нужно убивать все процессы которые не твои, а именно:

procedure TForm1.Button2Click(Sender: TObject);
var
ProcessHandle:THandle;
ProcessID:Integer;
TheWindow:HWND;
begin
TheWindow:=FindWindow(nil, PChar(Edit1.Text));
GetWindowThreadProcessID(TheWindow, @ProcessID);
ProcessHandle:=OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessId);
TerminateProcess(ProcessHandle,4);
Edit1.Text:="";
end;

Ну сам понимаеш что в Edit1.Text у на должно быть название того окна, которое мы получили из листбокса в предыдущем клике и это название должно не равнятся названию твоего шэла :)
TerminateProcess(ProcessHandle,4); - убивает его нах...

Думаю теперь всё ясно и понятно....


 
Sword-Fish ©   (2003-09-30 11:54) [4]

Добрый день !!!
Я попробовал этот вариант с закрытием всех приложений, он работает, но Half-Life и Counter-Strike не закрывает почему и как это моно исправить ???


 
Sword-Fish ©   (2003-09-30 21:52) [5]

Мне может кто-нибудь ответить !!!


 
Livid ©   (2003-10-01 09:36) [6]

По-моему, проще перебирать процессы и соответственно убивать... Главное не трогать системные (как напр. svchost)
Чтобы перебрать процессы попробуй почитать документацию к CreateToolhelp32Snapshot, узнаешь много интересного :)
Все функции в юните tlhelp32.dcu


 
Livid ©   (2003-10-01 09:36) [7]

По-моему, проще перебирать процессы и соответственно убивать... Главное не трогать системные (как напр. svchost)
Чтобы перебрать процессы попробуй почитать документацию к CreateToolhelp32Snapshot, узнаешь много интересного :)
Все функции в юните tlhelp32.dcu



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

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

Наверх




Память: 0.48 MB
Время: 0.012 c
1-65446
Дмитрий
2003-10-07 15:18
2003.10.20
Стать на последний элемент в ListView


1-65537
Raduga
2003-10-08 09:15
2003.10.20
Установка Delphi5 под Win2000


3-65333
Difar
2003-09-30 08:06
2003.10.20
Восстановление таблицы Paradox


1-65528
Кодер
2003-10-08 09:52
2003.10.20
Свойство Enable в TRadioGroup


1-65531
bers
2003-10-08 10:10
2003.10.20
Подключение Си-шных библиотек.