Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> получить список окон, зная дексриптор процесса 
:(
    Опции темы
gonzales
Дата 7.1.2007, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 13.3.2006

Репутация: нет
Всего: 2



Вопрос неоднократно обсуждался, но вразумительного ответа я не нашел, поэтому прошу не отсылать к поиску.

Раскрою суть вопроса:
Имеется запущеное приложения, я знаю только имя его исполняемого файла.
Далее делая снимок процессов и используя TProcessEntry32 я могу получить th32ProcessID процесса.
Мне нужно зная ID процесса найти handle его окна (или окон) для последующей работы уже непосредственно с окном,
а именно мне нужно сделать его активным.
А вот как это сделать, не прибегая к жестким методам типа сортировать все окна, у каждого окна искать процесс-родитель и сравнивать их хэндлы.
--------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!!
PM MAIL   Вверх
Sunvas
Дата 7.1.2007, 02:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: нет
Всего: 89



Цитата(gonzales @  7.1.2007,  00:38 Найти цитируемый пост)
А вот как это сделать, не прибегая к жестким методам типа сортировать все окна, у каждого окна искать процесс-родитель и сравнивать их хэндлы.

Как мне кажется это единственный способ. Зная процесс мы никак не можем узнать количество окон открытых им. Выход: нужно делая список всех окон проверять, равен ли номер процесса окна номеру процесса нашего. smile 


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
RA
Дата 7.1.2007, 03:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 7
Всего: 115



EnumThreadWindows

Добавлено @ 03:50 
примерно так работает....

Код

Function EnumThreadWindowProc(H:THandle;Param:Pointer):Bool;Stdcall;
var  WindowText: array[0..255] of char;
Begin
   GetWindowText(h, WindowText, 255);
   Form1.Memo1.lines.Add(WindowText);

  Result:=True;
End;


procedure TForm1.Button1Click(Sender: TObject);
Var h        : Integer;
    Te32     : TThreadEntry32;
    hProcess : THandle;
    ProcessPid : integer;
Begin

  ProcessPid:= 123456;

  h := CreateToolHelp32Snapshot(TH32CS_SNAPTHREAD,0);

  Te32.dwSize := SizeOf(Te32);

  If Thread32First(h,Te32) Then
  Repeat

    If Te32.th32OwnerProcessID= ProcessPid  Then
      EnumThreadWindows(Te32.th32ThreadID,@EnumThreadWindowProc,0);

  Until Not Thread32Next(h,Te32)

  CloseHandle(h);
end;

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0790 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.