Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.16;
Скачать: 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 вся ветка

Текущий архив: 2003.01.16;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.009 c
14-49314
Сергей Кажугетович
2002-12-28 15:33
2003.01.16
ПЕРЛ?


3-48854
Фтпуд
2002-12-23 17:18
2003.01.16
Вызов StoredProc из Delphi6 в которой используется пользовательск


1-49030
Ba-ss
2003-01-07 21:38
2003.01.16
Помогите, как проверить поля, чтобы там были только цифры


1-49151
KIR
2003-01-05 14:24
2003.01.16
Вопрос про событие OnDrawCell стандартного StringGrid a


1-49041
AlekseyK
2003-01-03 11:37
2003.01.16
StringGrid в Word





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский