Страница 1 из 1

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

СообщениеДобавлено: 17.07.2012 16:37:05
PapaNT
Уважаемые коллеги, доброго времени суток!

Ранее в топике 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 и их "тексты").

Как определить какое окно двигать???

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

СообщениеДобавлено: 17.07.2012 16:45:17
Mr.Smart
Spy++ выдаёт следующий класс окна IEFrame. Попробуйте его искать FindWindow

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

Добавлено спустя 6 минут 37 секунд:
А вообще хрен поймёшь. IE с двумя вкладками

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

СообщениеДобавлено: 17.07.2012 17:18:22
PapaNT
Ладно, как определить какие hwnd порождены от ранее запущенного своими руками? По ним уже можно будет попробовать пробежаться и каждый попробовать подвинуть в нужную позицию :)

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

СообщениеДобавлено: 06.08.2012 13:40:38
PapaNT
Простейшая задача - запустить полноэкранное приложение на втором мониторе. И не простое приложение, а IE в режиме киоска (заблокированные органы управления).

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