Есть ли хук Windows API для «это приложение требует внимания»? - PullRequest
3 голосов
/ 16 декабря 2008

В Windows XP, когда программа хочет внимания пользователя, она мигает оранжевой кнопкой на панели задач. Любой человек с IM-программой, вероятно, знаком с этим поведением. Но когда я играю в игру в полноэкранном режиме, я не вижу этого, и сообщения остаются без ответа.

Сейчас я пишу собственный игровой движок, и я хотел бы быть добрым с моими пользователями. Есть ли какой-нибудь вызов Windows API, для которого я могу написать ловушку, которая будет уведомлять мою программу, когда любая другая программа просто устанавливает свою кнопку на панели задач в «оранжевый режим мигания»? Таким образом, я мог бы уведомить пользователя, когда это произойдет.

Я был бы удивлен, если это не доступно. Я видел заставку Mac OS Classic, которая смогла сделать это еще в середине 90-х. Вот откуда у меня появилась идея.

РЕДАКТИРОВАТЬ: Это было помечено как дубликат как я могу программно определить, если приложение мигает в задачах , но я снова открыл его, потому что ответы лучше в этом, и побудить больше людей обсуждать возможные решения, если таковые существуют.

Ответы [ 5 ]

3 голосов
/ 16 декабря 2008

Я не думаю, что есть такая вещь. Возможно, вы сможете достичь этого с помощью перехвата API , хотя я не уверен, что Vista позволит вам это сделать. Работает на XP, хотя.

Тем не менее, есть несколько других идей в этом направлении, которые могут быть «лучшими»:

  • Не берите на себя исключительное право собственности на звуковые устройства, чтобы можно было слышать звуки других программ. Я не уверен, как это сделать, но некоторые игры блокируют другие звуки, некоторые нет;
  • Разрешить пользователю переключаться с игры с помощью ALT-TAB и других комбинаций клавиш;
  • Если другое окно пытается стать активным, разрешите ему и изящно сверните;

Другие общие советы включают в себя:

  • Старайтесь минимизировать время восстановления. Я ничего не знаю о программировании игр, но для некоторых игр это занимает много времени.
  • Правильно восстановить изображение при сворачивании / восстановлении. Некоторые игры имеют проблемы с этим.
  • Автоматическая пауза при сворачивании. Если это сетевая игра и ее невозможно приостановить, возможно, отправьте сообщение другим игрокам, чтобы они знали.
  • Несколько не связано, но мне нравится, когда игры показывают где-то часы (реальные часы, а не игровое время). Таким образом, я могу легко сказать, должен ли я уже лечь спать, не свернув программу. :)
0 голосов
/ 01 октября 2009

Это вполне возможно сделать. Я делаю это на Windows 7, так что я почти уверен, что это возможно и на Vista.

0 голосов
/ 20 мая 2009

Вот несколько ссылок, которые помогут вам начать работу с Api

www.internals.com / статьи / apispy / apispy.htm www.wheaty.net/

В целом Vista не имеет проблем с перехватом API, за исключением того факта, что она не позволяет перехватывать защищенные процессы.

0 голосов
/ 17 декабря 2008

Конечно, это возможно. Это даже FAQ по Win32 (в течение многих лет ...) см. Adv. API новости: //comp.os.ms-windows.programmer.win32

0 голосов
/ 16 декабря 2008

Похоже, этот вопрос уже задавался на SO: Как программно определить, мигает ли приложение на панели задач

Краткий ответ: не представляется возможным.

...