Главная страница
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.02 c
14-65580
Ua
2003-10-02 12:54
2003.10.20
Шоб я издох!!!


1-65514
Peter
2003-10-08 11:19
2003.10.20
Tray


11-65399
mike.dld
2003-02-06 11:23
2003.10.20
Проблемы


8-65559
Arkan
2003-06-18 23:20
2003.10.20
GIF>BMP


6-65566
oduvan
2003-08-24 17:34
2003.10.20
Как проверить, что все данные получитны сокетом?