Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.09.11;
Скачать: [xml.tar.bz2];

Вниз

Можно ли получить Handle процесса, не зная его PID?   Найти похожие ветки 

 
Vorobyev Sergey   (2003-07-10 10:24) [0]

Привет всем!
Ситуация следующая:
Есть процессА, который запускает процессБ (с помощью CreateProcess).
Необходимо в процессеБ получить Handle процессаА, наподобие OpenProcess, при этом не передавая и не зная идентификатора (PID) процессаА?
Нельзя как-нибудь унаследовав Handle процессаА, получить его в процессеБ (подобно семафорам и мутексам, используя InheritHandles)

Спасибо


 
MBo   (2003-07-10 10:27) [1]

проще всего записать ProcessID A, например, в именованный MMF, и считать его из B.
А можно и передать его как параметр командной строки.


 
Игорь Шевченко   (2003-07-10 10:48) [2]

В Nt/2000/XP можно через NtQueryInformationProcess (ProcessBasicInformation, ...) в возвращаемой структуре данных есть поле InheritedFromProcessId


 
Vorobyev Sergey   (2003-07-10 10:53) [3]


> MBo © (10.07.03 10:27)
> проще всего записать ProcessID A, например, в именованный
> MMF, и считать его из B.
> А можно и передать его как параметр командной строки.

Согласен, что так можно..
Процесс ID можно передать различными способами..
НО, интересует именно МОЖНО ЛИ ПОЛУЧИТЬ Handle ПРОЦЕССА БЕЗ PID?


> Игорь Шевченко © (10.07.03 10:48)

К сожалению :-((( программа должна работать как под управлением Win9x, так и NT/2000/XP


 
MBo   (2003-07-10 10:59) [4]

ToolHelp32 - PROCESSENTRY32.th32ParentProcessID

>МОЖНО ЛИ ПОЛУЧИТЬ Handle ПРОЦЕССА БЕЗ PID
Зачем? Для дуплицирования все равно нужен дескриптор процесса.


 
Набережных С.   (2003-07-10 17:41) [5]

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
hPrc: THandle;
si: TStartupInfo;
pi: TProcessInformation;
Params: string;
begin
hPrc:=OpenProcess(MAXIMUM_ALLOWED, true, GetCurrentProcessId);
FillChar(si, Sizeof(si), 0);
si.cb:=Sizeof(si);
Params:="""+ParamStr(0)+"""+" "+IntToStr(hPrc);
if CreateProcess(nil, PChar(Params), nil, nil, true, 0, nil, nil, si, pi)then
begin
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
end;
CloseHandle(hPrc);
end;

procedure TForm1.FormShow(Sender: TObject);
var
hPrc: THandle;
begin
Edit1.Text:=IntToStr(GetCurrentProcessId);
if ParamCount = 1 then
begin
hPrc:=StrToInt(ParamStr(1));
TerminateProcess(hPrc, 0);
( hPrc)
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
hPrc: THandle;
si: TStartupInfo;
pi: TProcessInformation;
Params: string;
begin
hPrc:=OpenProcess(MAXIMUM_ALLOWED, true, GetCurrentProcessId);
FillChar(si, Sizeof(si), 0);
si.cb:=Sizeof(si);
Params:="""+ParamStr(0)+"""+" "+IntToStr(hPrc);
if CreateProcess(nil, PChar(Params), nil, nil, true, 0, nil, nil, si, pi)then
begin
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
end;
CloseHandle(hPrc);
end;

procedure TForm1.FormShow(Sender: TObject);
var
hPrc: THandle;
begin
Edit1.Text:=IntToStr(GetCurrentProcessId);
if ParamCount = 1 then
begin
hPrc:=StrToInt(ParamStr(1));
TerminateProcess(hPrc, 0);
CloseHandle(hPrc);
end;
end;



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

Форум: "WinAPI";
Текущий архив: 2003.09.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
3-33461
Марат
2003-08-21 06:46
2003.09.11
F1Book


1-33622
Raper
2003-09-01 17:47
2003.09.11
Кто нибудь обьясните по какой формуле работает оператор XOR


14-33760
race1
2003-08-23 17:42
2003.09.11
забадала


14-33752
Skier
2003-08-22 14:53
2003.09.11
Опять по


14-33727
Vt
2003-08-25 07:59
2003.09.11
Файл справки.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский