Форум по Delphi программированию



Вернуться   Форум по Delphi программированию > Все о Delphi > Рабочий стол
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.07.2012, 18:19
Advanced_Guest Advanced_Guest вне форума
Прохожий
 
Регистрация: 16.07.2012
Сообщения: 1
Репутация: 10
Восклицание Как определить запуск 3D приложения?

Как определить запуск полноэкранного 3D приложения? Мне необходимо останавливать работу приложения при запуске, например, видеоигры.

Пишу GUI под консольный клиент распределённых вычислений, надоело ручками останавливать/запускать.
Ответить с цитированием
  #2  
Старый 17.07.2012, 18:25
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

Думаю копать следует в поиска процесса и убивать его. Гениально правда?
Ответить с цитированием
  #3  
Старый 17.07.2012, 19:51
Аватар для cotseec
cotseec cotseec вне форума
Активный
 
Регистрация: 16.07.2008
Сообщения: 353
Версия Delphi: D7,TDE06,RAD09
Репутация: 1443
По умолчанию

как варианты
1 ловить изменение разрешения экрана (не очень, т.к. пользователь может сам захотеть изменить разрешение экрана)
2 ставить хук на создание и/или активацию окон HCBT_ACTIVATE и/или HCBT_CREATEWND и проверять у пойманного окна наличие стиля WS_MAXIMIZE - так можно отловить запуск полноэкранных приложений (в большей части которых как-раз игрушки, если им не задан режим в окне...)
3 покопать в сторону DirectX, может там есть что-то, что прольет свет
__________________
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard
Ответить с цитированием
  #4  
Старый 19.11.2012, 17:29
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Вообще, думаю, нормального универсального способа нет. Например, одна игра, которую я видел, создавала контекст DirectX на GetDC(0), т.е. прямо на экране, а не на каком-то окне. Также и наоборот - приложение может использовать видеокарту на полную катушку, но по-прежнему быть в отдельном окне.
Единственное, что пришло в голову - подменить библиотеку директХ, и в ней все вызовы перенаправить в реальный директХ, кроме создания контекста. Но это криво.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:23.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2021

ВКонтакте   Facebook   Twitter   Ссылка на Telegram