Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Мультимедиа в Delphi
Регистрация

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


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

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

Пишу GUI под консольный клиент распределённых вычислений, надоело его ручками останавливать/запускать.
Advanced_Guest вне форума Ответить с цитированием
Старый 16.07.2012, 19:13   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,455
По умолчанию

Ставить хуки на вызовы API directX'а.
Человек_Борща вне форума Ответить с цитированием
Старый 16.07.2012, 19:19   #3
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,120
По умолчанию

Advanced_Guest

Как определить запуск полноэкранного 3D приложения?

SHQueryUserNotificationState
Rififi вне форума Ответить с цитированием
Старый 16.07.2012, 20:07   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,003
По умолчанию

Цитата:
Note that there are no notifications sent when the user starts or stops a full-screen application.
хм...и чем она поможет?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 16.07.2012, 21:54   #5
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Ставить хуки на вызовы API directX'а.
А при чем здесь вообще DirectX?
Во-первых, далеко не каждое DirectX приложение является полноэкранным, а во-вторых, далеко не каждое полноэкранное приложение использует DirectX.
s-andriano вне форума Ответить с цитированием
Старый 17.07.2012, 00:17   #6
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,120
По умолчанию

Пепел Феникса

хм...и чем она поможет?

Ну каГбэ очевидно, что делать поллинг и мониторить изменение состояния.
Rififi вне форума Ответить с цитированием
Старый 17.07.2012, 00:38   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,003
По умолчанию

а да, вы правы, меня смутила эта строчка просто.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.07.2012, 05:39   #8
Advanced_Guest
 
Регистрация: 16.07.2012
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Rififi Посмотреть сообщение
Advanced_Guest

Как определить запуск полноэкранного 3D приложения?

SHQueryUserNotificationState
спасибо! дальше уже гуглиться.
Advanced_Guest вне форума Ответить с цитированием
Старый 17.07.2012, 14:19   #9
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Пишу GUI под консольный клиент распределённых вычислений, надоело его ручками останавливать/запускать.
Вообще-то такие вещи делаются установкой приоритета процесса. Не нужно останавливать клиент. В конце-концов, игра - не самый страшный потребитель. Скажем, упаковка архива, обработка фоток в Photoshop, рендеринг в 3D-Max, проверки целостности во время установки программ - все эти и многие другие операции могут грузить процессор. Что, будете все их пытаться определить?

Глупости это. Надо поставить клиенту самый низкий приоритет (или хотя бы ниже среднего). Тогда, если на машине не работают другие программы, вашему клиенту будет выделяться 100% ресурсов. Но стоит только запустить архиватор/игру/photoshop/и т.п. - как все ресурсы будут в первую очередь брошены на активное приложение, а вашему клиенту останутся только остатки.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 17.07.2012, 15:30   #10
Advanced_Guest
 
Регистрация: 16.07.2012
Сообщений: 3
По умолчанию

Цитата:
Сообщение от GunSmoker Посмотреть сообщение
Вообще-то такие вещи делаются установкой приоритета процесса. Не нужно останавливать клиент. В конце-концов, игра - не самый страшный потребитель.
там CUDA-вский консольный клиент и он процессор потребляет слабенько, а вот видеокарту прижимает хорошо даже в низком приоритете. В не играх малозаметно, а вот в запущенных 3D-приложениях начинаются тормоза.

Цитата:
Сообщение от GunSmoker Посмотреть сообщение
Скажем, упаковка архива, обработка фоток в Photoshop, рендеринг в 3D-Max, проверки целостности во время установки программ - все эти и многие другие операции могут грузить процессор. Что, будете все их пытаться определить?
да. Чем там пользуются с аппаратным ускорением CUDA? Популярное и по пальцам пересчитать можно: Photoshop, 3D-Max, Illustrator, AutoCAD. Остальное определять и не надо, в настройках GUI список приложений сделать можно, при запуске которых останавливать работу клиента.

Последний раз редактировалось Advanced_Guest; 17.07.2012 в 15:40.
Advanced_Guest вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как разрешить запуск второй копии чужого приложения s1s1s1 Общие вопросы Delphi 4 02.11.2011 01:47
как определить закрытие приложения Анастасия123456789 Помощь студентам 3 02.05.2009 16:32
как подождать о определить закрытие приложения Анастасия123456789 Общие вопросы Delphi 1 02.05.2009 16:30
Как определить путь чужого приложения? VVM Win Api 3 02.12.2008 19:22
Как определить класс стороннего приложения. Son Win Api 6 25.11.2008 12:52