Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2014, 07:58   #1
Xo66um
Форумчанин
 
Регистрация: 11.05.2013
Сообщений: 154
По умолчанию Получить PID по хэндлу окна

Всем привет.

Наткнулся на грабли, и не знаю как бороться...
Собственно, я нахожу и получаю список нужных мне окон с помощью FindWindow, по нужному классу и заголовку - с этим проблем нет.
Но как получить ID процесса, зная хэндл окна? Соль в том, что список постоянно обновляется, и если перебирать все процессы через GetWindowThreadProcessId, CreateToolhelp32Snapshot, Process32First и Process32Next, то тратится уйма времени, и перебор не успевает найти нужный PID, как настает пора снова обновлять список.

Третий день над проблемой бьюсь - без толку, гугл не желает со мной дружить, и намекает на все тот же хардкорный путь описанный выше

В общем, не знаю что делать... Может кто посоветует что-нибудь?
Xo66um вне форума Ответить с цитированием
Старый 28.07.2014, 10:26   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Используйте PsAPI.
Ещё есть вроде бы GetWindowThreadId,GetWindowProcessI d, и GetCurrentThrreadId.
Точно не помню.
Человек_Борща вне форума Ответить с цитированием
Старый 28.07.2014, 11:07   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

GetWindowThreadProcessId
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.07.2014, 15:27   #4
Xo66um
Форумчанин
 
Регистрация: 11.05.2013
Сообщений: 154
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Используйте PsAPI.
Ещё есть вроде бы GetWindowThreadId,GetWindowProcessI d, и GetCurrentThrreadId.
Точно не помню.
Спасибо, попробую разобраться.
Xo66um вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить handle и пользователя, запустившего процесс, зная PID Night_Devil Win Api 5 10.06.2012 13:16
Получить все окна процесса, зная его PID. Johnson Общие вопросы Delphi 2 11.01.2011 19:27
хэндл окна по PID процесса? Johnson Win Api 1 16.12.2010 16:05
Найти Handle главного Thread программы по HWND\PID окна ZaRDaK Win Api 3 20.12.2009 19:10
Путь к файлу по хэндлу окна Veiron Общие вопросы Delphi 10 22.05.2009 20:47