![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать, что запустило мою программу (мой EXE-файл)? [D1, D2, D3, D4, D5, D6, D7, Win95/98, WinME, NT4, Win2k, WinXP]
SottNick © (2002-11-27 08:08:00)собственно, сабж (Как узнать, что запустило мою программу (мой EXE-файл)?)
хоть что-нибудь
ID процесса
Handle чего-нить
что угодно
SottNick (2002-11-28 06:30:00) [1]Отлично!
Работает как надо.
mumu (2002-11-28 03:49:00) [2]Не нравится WMI, можно использовать TlHelp32.
Получение ID родительского процесса с использованием ToolHelp-функций.
...
uses ..., TlHelp32;
...
procedure TForm1.Button1Click(Sender: TObject);
var
hProcessSnap, CProcessID: THandle;
pe32: TPROCESSENTRY32;
begin
// получаем ID нашего процесса
CProcessID:=GetCurrentProcessID;
// делаем снимок системы
hProcessSnap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
pe32.dwSize:=sizeof(PROCESSENTRY32);
// ищем в сделанном снимке системы наш процесс
Process32First(hProcessSnap, pe32);
while CProcessID<>pe32.th32ProcessID do
Process32Next(hProcessSnap, pe32);
// в поле th32ParentProcessID структуры PROCESSENTRY32
// ID родительского процесса
Label1.Caption:="ParentProcessID: "+IntToStr(pe32.th32ParentProcessID);
CloseHandle(hProcessSnap);
end;
Все это должно работать, начиная с Win95.
PS. Обработка ошибок убрана намеренно, чтобы разгрузить код.
SottNick (2002-11-27 11:40:00) [3]> mumu
1. у меня нет WMI SDK. не могу попроборать запустить пример.
2. не уверен, что это то
мне надо, чтоб моя прога сказала, запустил ее Explorer или TotalCommander
mumu (2002-11-27 09:51:00) [4]смотреть здесь: http://www.delphikingdom.com/mastering/wmi.htm
один из примеров как раз и называется GetProcessData