Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Отслеживание запуска процессов [Win2k, WinXP]


DelphiN! ©   (2004-08-02 07:04:00) 

Как поймать запуск нового процесса, и разрешить ему запуск либо же нет. А также как получить информацию о процессе(имя исполняемого файла)


Кириешки   (2004-08-02 09:48:00) [1]

Вот так, зная Handle окна программы можно определить имя EXE :

// Для начала определяешь какому процессу принадлежит окно:
Var pProcID : ^DWORD;
begin
GetMem (pProcID, SizeOf (DWORD));
GetWindowThreadProcessId (WinHandle, pProcID);
end;
// а после этого используешь TProcessEntry32 примерно так:
function GetExeNameByProcID (ProcID : DWord) : String;
var
ContinueLoop   : BOOL;
FSnapshotHandle : THandle;
FProcessEntry32 : TProcessEntry32;
begin
FSnapshotHandle := CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
Result := '';
while (Integer (ContinueLoop) <> 0) and (Result='') do
begin
 if FProcessEntry32.th32ProcessID = ProcID then
  Result := FProcessEntry32.szExeFile;
 ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
end;
// Не забудь в uses добавить Tlhelp32


noname   (2004-08-02 07:48:00) [2]

Перехватывай CreateProcessA/W


Наверх

Титульная страница Поиск, карта сайта Написать письмо