Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API - WinAPi приложение поверх всех окон

Ответить
Настройки темы
Win32 API - WinAPi приложение поверх всех окон

Аватара для XCodeR

Ветеран


Сообщения: 878
Благодарности: 53

Профиль | Сайт | Отправить PM | Цитировать


Простой вопрос.
необходимо открыть приложение(например "pr1.exe") со "свойством" AlwaysOnTop(ну воерх всех окон т.е.)
а потом по желанию закрыть.
И если есть возможность(не обязательно) отловить, когда это приложение станет не активным и так же закрыть....

WinAPI & C++....

Отправлено: 18:01, 11-06-2006

 

Аватара для DillerInc

Обратный инженер


Сообщения: 644
Благодарности: 47

Профиль | Отправить PM | Цитировать


XCodeR
Код на С++ привести не могу,но принцип будет такой,что главное окно приложения создаёшь функцией CreateWindowEx и в качестве первого параметра передаёшь ей стиль WS_EX_TOPMOST.
А если уничтожить,то тогда DestroyWindow.
А отлавливать неактивность окна можно анализируя сообщения в оконной функции(WindowProc) твоего приложения.В данном случае нас будет интересовать сообщение WM_ENABLE.

Последний раз редактировалось DillerInc, 14-06-2006 в 21:05.


Отправлено: 01:48, 14-06-2006 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Нас интересует WM_ACTIVATE (если речь идёт о переключении Alt+Tab). Ещё можно SetWindowPos(hwnd, HWND_TOPMOST, ....);

Отправлено: 18:58, 15-06-2006 | #3


Аватара для DillerInc

Обратный инженер


Сообщения: 644
Благодарности: 47

Профиль | Отправить PM | Цитировать


pva
Тогда уж WM_ACTIVATEAPP.

-------
То,что неясно,следует выяснить.То,что трудно творить,следует делать с великой настойчивостью. © Конфуций


Отправлено: 19:51, 15-06-2006 | #4

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Согласен

Отправлено: 17:02, 16-06-2006 | #5


Аватара для XCodeR

Ветеран


Сообщения: 878
Благодарности: 53

Профиль | Сайт | Отправить PM | Цитировать


Цитата:
лавное окно приложения создаёшь функцией CreateWindowEx
я имел ввиду, что мне нужно открыть "чужое" приложение.
Например функцией CreateProcess. Но там я не нашел, где можно поставить свойство alwaysontop....

Отправлено: 08:46, 19-06-2006 | #6


Аватара для DillerInc

Обратный инженер


Сообщения: 644
Благодарности: 47

Профиль | Отправить PM | Цитировать


XCodeR
Откуда вы товарищ вообще взяли этот "alwaysontop"??
Если речь идёт о чужом приложении,то тогда запускайте его,находите его главное окно(FindWindow) и используйте функцию SetWindowPos с параметром HWND_TOPMOST(как предложил pva).

-------
То,что неясно,следует выяснить.То,что трудно творить,следует делать с великой настойчивостью. © Конфуций

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:33, 20-06-2006 | #7


Аватара для XCodeR

Ветеран


Сообщения: 878
Благодарности: 53

Профиль | Сайт | Отправить PM | Цитировать


фактически получилось, но вот проблема, программа("внешняя") открывается через какое-то время, а => её не найти с помощью FindWindow.
Может можно как-нибудь сделать таймер ожидания?... или взять хендл приложения(окна) сразу после выхова CreateProcess...

пора взяться с WinApi....((((

*с = за

Отправлено: 22:18, 23-06-2006 | #8


редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


Запуститься и тупо каждые 0.5 секунды искать требуемое окно? Небольшой лаг, но очень просто. Сложнее - перехватить CreateProcess или CreateWindow(Ex). Или поставить хук на WH_SHELL и ловить HSHELL_WINDOWCREATED. Но по моему, это гораздо муторнее и совсем не нужно.

-------
http://ivank.ru


Отправлено: 22:25, 23-06-2006 | #9


Аватара для DillerInc

Обратный инженер


Сообщения: 644
Благодарности: 47

Профиль | Отправить PM | Цитировать


Цитата:
Может можно как-нибудь сделать таймер ожидания?
...можно использовать функцию Sleep,чтобы дать запускаемому приложению чуток разгуляться.Оформить можно в цикле типа repeat..until.

-------
То,что неясно,следует выяснить.То,что трудно творить,следует делать с великой настойчивостью. © Конфуций


Отправлено: 01:11, 24-06-2006 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API - WinAPi приложение поверх всех окон

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Некоторые проблемы с установкой нашей программы поверх всех окон crashtuak Программирование и базы данных 3 31-12-2009 00:32
Порно-баннер поверх всех окон NukeReACTOR Лечение систем от вредоносных программ 12 17-11-2009 20:21
Интерфейс - [решено] Как сделать любую программу "поверх всех окон"? DesignerMix Microsoft Windows 7 3 24-10-2009 13:17
C/C++ - [C++Builder 2007] Две формы поверх всех окон и одна форма поверх другой crashtuak Программирование и базы данных 3 13-04-2009 16:33
Установка XP поверх XP с сохранением всех настроек. cordlesspass Microsoft Windows 2000/XP 6 30-12-2004 13:14




 
Переход