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

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

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

Аватара для XCodeR

Ветеран


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

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


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

WinAPI & C++....

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

 
pva pva вне форума

Аватара для pva

Ветеран


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

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


Есть на этот случай полезная функция WaitForInputIdle.
Код: Выделить весь код
PROCESS_INFORMATION pi;

if (CreateProcess(..., &pi) &&
    WaitForInputIdle(pi.dwProcessId, 5000)==0) // можно INFINITE, но лучше забить, если долго не получается
{
    Sleep(100); // для надёжности, но можно не делать
    ...
    // здесь мучаешь эту прогу
}
else
{
     // отчёт об ошибках, смотришь GetLastError()
}

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



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

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


Новый участник


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

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


Здраствуйте. Давно интересовался данной опцией. Помогите пожалуйста с исходным кодом. Итак у меня код вида:
Код: Выделить весь код
*****
const
MAIN_DIALOG = 101;
STAY_ON_TOP_BOX = 1102;
*****
Требуется сделать так: если отметить чекбокс, то окно приложения станет поверх остальных. Если убрать галочку - то все наоборот. Дайте пример пожалуйста. Заранее спасибо.

Отправлено: 23:15, 05-07-2007 | #12


Аватара для DillerInc

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


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

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


Цитата:
Итак у меня код вида
...весьма убедительный код

На каком языке-то требуется??

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

И потом добавить в WindowProc приложения фильтрацию сообщений WM_COMMAND, чтобы отловить момент установки/снятия т.н. флажка.

Могу написать пробный код(просто самому интересно), но на ассемблере.

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


Отправлено: 02:18, 06-07-2007 | #13


Ветеран


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

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


DillerInc
Цитата:
На каком языке-то требуется??
Это, похоже, создание виндовских окон через функцию CreateDialog, практикуется во многих диалектах бейсика, в т.ч. PowerBasic (хотя в нем это в скрытом от юзера виде).

Отправлено: 08:54, 06-07-2007 | #14


Новый участник


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

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


А... Извиняюсь. Пишу на Дельфи. А так просто указал названия ресурсов из res файла. Просто где-то надыбал код:
Код: Выделить весь код
var
Inst, HWND : integer;

procedure WindowOnTop;
begin
 HWND := FindWindow(nil, 'APP_NAME');
 SetWindowPos(HWND, HWND_TOPMOST, 0,0,0,0, SWP_NOMOVE or SWP_NOSIZE or SWP_SHOWWINDOW);
end;
Он конечно работает, но никак не врублюсь как правильно к чекбоксу его приляпать. А то просто приляпал к кнопке и рад... Где-то видел исходник, но уже наверное все форумы облазил - только и знают как для форм делать, а вот чтобы через WinAPI с диалогами... Смотрел Windows SDK, но там настолько запутано...
Вообщем помогите кто чем может.

Отправлено: 09:34, 06-07-2007 | #15


Аватара для DillerInc

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


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

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


Вложения
Тип файла: rar MiniAppSwitchZOrder.rar
(16.3 Kb, 36 просмотров)

Maksim V
В общем,прикрепляю небольшой исходник со скомпилированной программкой на облегчённых Дельфях.
Облегчённые Дельфи -- это полный отказ от VCL, т.е. использование только WinAPI.Основной плюс -- минимальный(для Дельфи) размер выходного исполняемого файла.

В общем,изучай исходник.

Цитата:
Смотрел Windows SDK, но там настолько запутано...
...а надо идти сразу на MSDN и там искать,что нужно.

P.S. Если что,то я уже давно не пишу на Дельфи.Могут быть некоторые несуразности.

P.P.S. Assembler forever!!

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


Отправлено: 13:50, 06-07-2007 | #16


Новый участник


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

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


Вложения
Тип файла: rar Checkbox Window On Top.rar
(9.6 Kb, 34 просмотров)

Спасибо. Разобрался. Вот кому интересно будет, приаттачил архив.

Да, кстати, дайте пожалуйста код для меню. Как в Диспетчере задач - отмечаешь галочкой пункт меню и окно поверх других окон. Желательно приаттачтьте исходник.

Последний раз редактировалось Maksim V, 09-07-2007 в 21:14.


Отправлено: 22:37, 06-07-2007 | #17


Аватара для Новичок_Андрей

Новый участник


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

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


Всем привет. У меня возникает такая сложность. Использую VB 6.0.
Моя форма как и должно быть становиться поверх других окон, но не поверх панели быстрого запуска. Т. е. если форма находиться в открытом состоянии на панели быстрого запуска, то при клике на саму панель, форма прячется под эту самую панель. Что можно сделать?

Отправлено: 17:56, 15-03-2012 | #18


Аватара для Drongo

Будем жить, Маэстро...


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

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


Цитата Новичок_Андрей:
но не поверх панели быстрого запуска »
Я так понимаю, имелась ввиду - панель задач.

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 18:39, 15-03-2012 | #19


Аватара для Новичок_Андрей

Новый участник


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

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


Цитата Drongo:
Я так понимаю, имелась ввиду - панель задач. »
Ага. Извиняюсь за кривословие

Отправлено: 18:55, 15-03-2012 | #20



Компьютерный форум 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




 
Переход