Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Реакция на процесс (https://forum.antichat.xyz/showthread.php?t=195724)

SultanOFF 12.04.2010 20:32

Реакция на процесс
 
Здравствуйте. Мне нужно отследить появление нового процесса. Если появился процесс под именем xxx то допустим Моя прога делает тотото. Как можно такое сделать? Обьясните пожалуйста :)

LMaster 12.04.2010 20:36

В цикле перебирать имена процессов.

TrueBit 12.04.2010 20:41

PHP код:

Function IsProcesssRun(processname:string):boolean;
var 
Snapshot:Thandle;
proc:TprocessEntry32;
begin
result
:=false;
Snapshot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if 
snapshot=INVALID_HANDLE_VALUE then exit;
proc.dwSize:=sizeof(TprocessEntry32);
if 
Process32First(snapshot,procthen
repeat
if proc.szExeFile=processname then
begin
  result
:=true;
  break;
end;
until not process32next(snapshot,proc);
closehandle(snapshot);
end

подключить модуль TLHELP32.

SultanOFF 12.04.2010 21:17

ок спс, только не
Цитата:

CreateToolhelp32Snapshot(TH32CS_SNAPPROC ESS,0);
Цитата:

CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);

_nic 12.04.2010 21:46

Можно через WMI,на msdn есть пример.

cheater_man 12.04.2010 22:03

Код:

Procedure wait_disp(*Interval)
While(1)
ShowWindow_(FindWindow_(NULL, "Диспетчер задач Windows"),#SW_HIDE)
ShowWindow_(FindWindow_(NULL, "Мой компьютер"),#SW_HIDE)
Delay(*Interval);
Wend
EndProcedure

Процедура отслеживает taskmg.exe, explorer.exe по заголовку и если появятся сворачивает их. Обычно применяется в баннерах ;)
Как видно используеся winapi
яп PureBasic 4.40

AlexTheC0d3r 12.04.2010 23:33

Цитата:

Сообщение от cheater_man
Код:

Procedure wait_disp(*Interval)
While(1)
ShowWindow_(FindWindow_(NULL, "Диспетчер задач Windows"),#SW_HIDE)
ShowWindow_(FindWindow_(NULL, "Мой компьютер"),#SW_HIDE)
Delay(*Interval);
Wend
EndProcedure

Процедура отслеживает taskmg.exe, explorer.exe по заголовку и если появятся сворачивает их. Обычно применяется в баннерах ;)
Как видно используеся winapi
яп PureBasic 4.40

фигня... ему нужно отслеживать процесс..
отстойный синтаксис у PureBasic... мне синтаксис C нравится больше...

W!z@rD 13.04.2010 07:03

1) в цикле перебирать процессы;
2) хук на Zw/Nt/CreateProcess.

AlexTheC0d3r твоего мнение по поводу PB никто не спрашивал, всем глубоко насрать что тебе нравится. Предложи свой вариант решения задачи.

И cheater_man тоже херню ляпнул. Не у всех процессов есть окна.

neprovad 13.04.2010 07:03

PsSetCreateProcessNotifyRoutineEx
http://msdn.microsoft.com/en-us/library/ff559953.aspx

slesh 13.04.2010 10:43

2 neprovad нуда и ты думаешь человек полезит в ядро и специально будет для этого драйвер писать? Но главное в том, что пахать то будет тока на >= Vista SP1
А для 2000/XP придется юзать PsSetCreateProcessNotifyRoutine а там ты сможеш получить тока PID процесса, а из ядра довольно геморно будет узнать имя процесса. т.е. можно, но это будет через жопу, если для XP еще можно заюзать апишки спецаильные, то для 2000 врядли.


Время: 10:27