Приложение поверх всех окон.

Andrew1

Есть приложение, в котором возникает переодически некая активность.
Можно ли как-то сделать на винде так, чтобы в момент этой активности приложение возникало поверх всех открытых окон?
Для этого можно обойтись только настройками винды или нужно само приложение ковырять?

apl13

В винде — нет.
Советую дождаться Сигмы™, который объяснит, что ты не должен этого хотеть, потому что в этом не заключается предназначение компьютера.

nas1234

В винде — нет.
а в линуксе можно перехватить произвольное внутреннее событие произвольной сторонней программы и повесить на него произвольное действие?

marina7573

нужно код ковырять, стандартными средствами не сделаешь. В WinAPI есть функции для активации определенного окна. Приложение должно ловить события, при котором оно должно активировать себя, и посылать команду активации. Либо же напиши свою программу, которая будет в фоне следить за какой-то областью экрана и при каком-то событии активировать нужно тебе окно.
П.С. если есть код приложения, то также можно просто поменять стиль создаваемых окон на "поверх всех окон"

nas1234

Либо же напиши свою программу, которая будет в фоне следить за какой-то областью экрана и при каком-то событии активировать нужно тебе окно
и как оно увидит активность этой проги если например смотреть кино без оверлея?

marina7573

Например, будет смотреть в квадрат NxM пикселей экрана и считать контрольную сумму каждые l секунд. Если контрольная сумма изменилась, то событие произошло. Подобная фича реализована, например, в autoit - я использовал его для написания ботов.
П.С. если ты про то, что окно может быть полностью закрыто другими окнами - то тогда скорее всего ничего не сделаешь (если не менять код исходной программы). Если же хотя бы часть видна, то можно сделать.

Andrew1

Еще у этого приложения есть функция воспроизведения звука. Может быть можно как-то контролировать обращение проги к mp3 файлу?

marina7573

попробовать внести изменения в mp3-файл? Если файл открыт в другой программе, то система не даст его изменить. Еще можно следить за звуком в колонках - типа если уровень звука превышает какое-то значение, то ловится событие.

apl13

а в линуксе можно перехватить произвольное внутреннее событие произвольной сторонней программы и повесить на него произвольное действие?
Объясни подробнее, это как? Перехватить нажатия кнопок при вводе пароля и отослать на goofreemail.com.tw?
PS. Let the Holy War begin! :party2:

nas1234

Объясни подробнее, это как?
это то что хочет автор. ты сказал что в виннде никак, я спрашиваю, а что, в линуксе можно?

bestpilot8

В никсах можно взять и доработать напильником исходник той свободной программы, которую ты используешь, чтобы она отправляла сообщение системе, я полагаю.

nas1234

а в винде нельзя доработать исходник свободной программы?

marat7256

[теоретизирую]
Произвольное нельзя. Но программы общаются с икс-сервером по сетевому протоколу, и их, вероятно, можно подслушать.

0000

Насколько помню в Windows можно повесить перехватчики (hooks) на некоторые события/сообщения (ввод, сообщения окнам, вызовы WinAPI-функций).
Так что теоретически задача вполне имеет решение. Практически вряд ли кто станет его реализовывать.
P.S. В Win Vista и Win 7 может уже и нельзя, как и в приложениях, написанных под Net.

bestpilot8

Можно, только там процент свободных программ существенно ниже. Взять хотя бы саму винду. :)

apl13

А вообще, конечно, я не прочитал, о чем просит ТС, а просит он странного.

Serab

А вообще, конечно, я не прочитал, о чем просит ТС, ну и похуй как бэ.

Andrew1

Почему странного?
Например у гугл толк, когда приходит сообщение, появляется встплывающее окно поверх всех приложений открыфтых.
Вот мне нужна подобная штука в приложении, в котором такая штука не предусмотрена.

marina7573

Забей, он не читал твой пост

Dasar

скорее всего тебе необходимо взять AutoIt(или аналог) и приспособить под свою задачу.

Dasar

как и в приложениях, написанных под Net.
для .net-приложений при соответствующих правах можно сделать инъекцию своего .net-кода, и повесить свой обработчик на необходимые события (например, на OnPaint)

nas1234

Например у гугл толк, когда приходит сообщение, появляется встплывающее окно поверх всех приложений открыфтых.
ну правильно, потому что это написано было разработчиками гуглтолка.

elenangel

для произвольных приложений при соответствующих правах можно сделать инъекцию своего бинарного кода (например, dll или LD_PRELOAD и повесить свой обработчик на необходимые события (например, на OnPaint)

Dasar

и повесить свой обработчик на необходимые события (например, на OnPaint)
не для всех языков это прокатывает, для C++, например, необходимы header-ы программы, а так же необходимо знать опции и версии библиотек с которыми собиралась программа

elenangel

для C++, например, удобно иметь header-ы программы, а так же удобно, но не обязательно знать опции и версии библиотек с которыми собиралась программа
ты хотел сказать?

Dasar

лучше бобра покорми

hiper-hoper

(например, dll или LD_PRELOAD)
это если они не статически собраны. хотя то что даркгрей написал хуиту это не отменяет, конечно.

Dasar

это если они не статически собраны. хотя то что даркгрей написал хуиту это не отменяет, конечно.
а пример можно? я даже готов C++-ный бинарник дать, а вы для него напишите перехват OnPaint без наличия h-файлов и опций сборки.

apl13

Между "приложение возникает поверх окон" и "появляется всплывающее окно" есть разница? И да, я не читал твой пост.

mironova

под XP полльзовался DM2
сейчас On Top Replica
Оставить комментарий
Имя или ник:
Комментарий: