Отслеживание запущенных процессов

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Отслеживание запущенных процессов

Сообщение PapaNT » 17.07.2012 16:37:05

Уважаемые коллеги, доброго времени суток!

Ранее в топике http://www.freepascal.ru/forum/viewtopic.php?f=23&t=8137 начал работать с процессами, но остался специфический вопрос.

Суть задачи в следующем:
1. Есть командная строка для запуска Internet Explorer (IE) с некоторыми параметрами (запускаю его через CreateProess)
2. IE запускается в любимой ему одному позиции экрана
3. Требуется перетащить окно IE на другую позицию

Возникли проблемы...
Дело в том, что hwnd для окна IE не соответствует hwnd инициированного процесса и не соответствует hwnd приложения получаемого через GetWindowText (проверил все видимые мне hwnd и их "тексты").

Как определить какое окно двигать???
PapaNT
постоялец
 
Сообщения: 167
Зарегистрирован: 11.09.2009 12:06:46
Откуда: Москва

Re: Отслеживание запущенных процессов

Сообщение Mr.Smart » 17.07.2012 16:45:17

Spy++ выдаёт следующий класс окна IEFrame. Попробуйте его искать FindWindow

Добавлено спустя 17 секунд:
Да IE 9

Добавлено спустя 6 минут 37 секунд:
А вообще хрен поймёшь. IE с двумя вкладками
Вложения
hz.PNG
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Отслеживание запущенных процессов

Сообщение PapaNT » 17.07.2012 17:18:22

Ладно, как определить какие hwnd порождены от ранее запущенного своими руками? По ним уже можно будет попробовать пробежаться и каждый попробовать подвинуть в нужную позицию :)
PapaNT
постоялец
 
Сообщения: 167
Зарегистрирован: 11.09.2009 12:06:46
Откуда: Москва

Re: Отслеживание запущенных процессов

Сообщение PapaNT » 06.08.2012 13:40:38

Простейшая задача - запустить полноэкранное приложение на втором мониторе. И не простое приложение, а IE в режиме киоска (заблокированные органы управления).

Смотрим сколько мониторов в системе. Если есть два, то переходим на ветку с запуском на втором мониторе.
Смотрим как именуются моники в системе \\.\DisplayN, где N от 0 и далее.
Смотрим как создать процесс на втором мониторе... wks0\Default - для основного монитора, а как на втором мониторе msdn молчит...
Ладно, мы не ищем легких путей. Есть hwnd на запущенный нами процесс IE, пытаемся дернуть его на новые координаты с полным отсутствием результата.
Смотрим на список запущенных процессов, находим hwnd на процесс с тайтлом нашей страницы, дергаем и обламываемся.
Смотрим на список процессов более внимательно, пробуем построить z-дерево и обламываемся - у запущенного нами процесса нет детей с окнами...
Смотрим на список окон и на его z-дерево, понимаем, что у окна IE нет родителя.
Берем список запущенных окон до старта нашей программы, стартуем IE, смотрим на список окон после, вычитаем свою нашу программу, находим свое невменяемое окно, дергаем его на новоем место и вот оно счастье!!!
PapaNT
постоялец
 
Сообщения: 167
Зарегистрирован: 11.09.2009 12:06:46
Откуда: Москва


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

Рейтинг@Mail.ru