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

Вниз

Как по 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 вся ветка

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

Наверх




Память: 0.46 MB
Время: 0.008 c
1-49092
duke2
2003-01-02 07:06
2003.01.16
Вопрос знатокам формата RTF


14-49233
smok_er
2002-12-25 19:43
2003.01.16
ToolBar как у IE


3-48949
mrcat
2002-12-23 11:02
2003.01.16
Удаление/добавление записей c gjvjom. SQL


1-49113
PONTIY
2003-01-05 10:56
2003.01.16
Ячейки DBGrid без фокуса


3-48931
ec
2002-12-20 15:42
2003.01.16
Компонент типа TTable без использования BDE или ADO





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