Название: Собственная графическая оболочка под Windows Отправлено: micolo от Август 19, 2013, 14:34 Доброго времени суток!
Разрабатываю графическую оболочку под windows, по типу тех что используются в игровых клубах. Вопрос собственно вот в чем. Как грамотнее организовать механизм отслеживания и работы с запущенными приложениями. Т.е. приложения которые были запущены непосредственно из-под оболочки. Необходимо сделать графическую панель где будут отображаться запущенные в данный момент приложения, открыты ли они или свернуты, по типу Панели задач в windows, правда с куда более простым функционалом. Понятно что внешние приложения запускаются через QProcess. А как их отслеживать дальше? Возможно ли это сделать только средствами QT или же все равно придется прикручивать WinAPI? Название: Re: Собственная графическая оболочка под Windows Отправлено: Kurles от Август 19, 2013, 16:10 Для 90% программ должно хватить QProcess, остальные - уже гораздо сложнее, например тот же хром при запуске клонирует самого себя и завершает работу, оставляя запущенным дочерний процесс. Соответственно QProcess из-за этого считает, что программа завершила свою работу, что не очень соответствует действительности :)
Название: Re: Собственная графическая оболочка под Windows Отправлено: neversleep от Август 19, 2013, 16:57 Осмелюсь предположить, что прикручивать winapi придётся однозначно, далее перечисляешь всё окна в системе (EnumWindows), по идентификатору окна получаешь идентификатор процесса(GetWindowThreadProcessId), по идентификатору процесса смотришь какой процесс его породил(PROCESSENTRY32.th32ParentProcessID), и если среди родителей окажется твоя оболочка, получаешь все необходимые тебе сведения о окне/процессе, исходя из найденных идентификаторов :)
Это я рассматривал только тот случай, если твоя оболочка будет запускать gui приложения имеющие "реальные" вендовые окна. Но лучше конечно перечелять все процессы в системе. Название: Re: Собственная графическая оболочка под Windows Отправлено: micolo от Август 19, 2013, 17:12 Спасибо за ответы!
Я тоже думаю что придется перечислять через EnumWindows и определять родительское окно или процесс. Единственно что меня смущает, в оболочке есть определенные разделы и теоретически возможен вариант того, что в разные разделы поместят одинаковые проги, и при переключении между разделами нужно чтобы на панели отображались запущенные проги именно с этого раздела. Если такое вообще возможно, получается надо при запуске приложений их как-то идентифицировать, чтобы в дальнейшем получить эти данные через WinAPI. Название: Re: Собственная графическая оболочка под Windows Отправлено: neversleep от Август 19, 2013, 17:20 Еще как вариант, можно с SetWindowsHookEx (http://msdn.microsoft.com/en-us/library/windows/desktop/ms644990%28v=vs.85%29.aspx) поэкспериментировать.
Название: Re: Собственная графическая оболочка под Windows Отправлено: Majestio от Август 20, 2013, 10:30 В первом сообщении увидел словосочетание "в игровых клубах". Сразу вспомнились "дополнительные" моменты с манипуляциями окнами и процессами. Посмотрите заранее в сторону программы игровой защиты Frost и что она при работе вносит в систему. Программа по сути - руткит. Прячет процессы, хэндлы открытых окон отдает равными нулю. Вобщем, просто имейте ввиду - граби иногда лежат там, где их определенно не ждешь.
|