Вниз
Скачать: CL | DM;

Как по ID процесса узнать главное его окно.   Найти похожие ветки 

 
SottNick ©   (2002-11-28 07:24) [0]

Нужна функция обратная GetWindowThreadProcessId.
Перебор окон вряд ли подойдет.
Рабочая прога, выдающая нужный результат - Process Explorer от SysInternals.com


 
Song ©   (2002-11-28 08:25) [1]

Тем не менее именно перебором это и делается.


 
Digitman ©   (2002-11-28 08:26) [2]

в отличии от ф-ции GetWindowThreadProcessId() , результат которой одназначен (вернуть идент-ры код.потока, создавшего некое интересующее окно, и процесса, породившего этот код.поток), "обратная" ф-ция таковой быть не может, ибо код.поток в ходе исполнения может создавать любое число окон (в т.ч. и вообще не создавать)


 
MikeZ ©   (2002-11-28 15:25) [3]

Код, который перебором выводит заглавие окна + имя файла. Если добавить несколько проверок, то будет выводить то, что нужно.

Procedure TForm1.Button1Click(Sender: TObject);
Var
// Uses TlHelp32
Window : HWnd;
hSn : THandle;
lppe : TProcessEntry32;
Buffer : Array[0..127] Of Char;
hProc : Cardinal;
Begin
//Ищем хендл верхнего окна
Window := GetForegroundWindow;
Repeat
If (Window <> Application.Handle) And
(GetWindowText(Window, Buffer, SizeOf(Buffer)) <> 0)
Then Begin
//Ищем ID процесса
GetWindowThreadProcessId(Window, @hProc);
//Делаем снимок процесса
hSn := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, hProc);
//Получаем список всех процессов
If Process32First(hSn, lppe) Then
Repeat
//Сравниваем ID и получаем имя ехе и путь ????????????????
If lppe.th32ProcessID = hProc Then
Begin
GetWindowText(Window, Buffer, SizeOf(Buffer));

{**********************}
ListBox1.Items.Add(Buffer + " (" + lppe.szExeFile + ")");
{**********************}
End;
Until Not Process32Next(hSn, lppe);
CloseHandle(hSn);
End;
//Ищем следующее окно
Window := GetNextWindow(Window, GW_HWNDNEXT);
Until Window = 0;
End;



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.01 c
3-48872
Calm
2002-12-19 13:58
2003.01.16
Почему-то не работает *простейший* скрипт :((


4-49339
Mixir
2002-11-23 14:18
2003.01.16
Запись в EXE фаил


14-49205
Dm9
2002-12-29 00:46
2003.01.16
Защита администратора


4-49374
Z_man7777
2002-11-28 13:36
2003.01.16
TCP/IP адрес


14-49206
Supreme
2002-12-28 23:46
2003.01.16
Всех с Новым 2003 годом!!!




   Наверх