Форум программистов, компьютерный форум, киберфорум
Delphi: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
39 / 39 / 11
Регистрация: 05.09.2015
Сообщений: 262

Сделать несворачивающееся окно (по Win+D) [not topmost]

05.09.2015, 03:49. Показов 2198. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть ветка "C++ и WinAPI", есть ветка "Delphi и WinAPI". Общей ветки WinAPI чего-то нету. Решил написать тут. Можно продублировать во вторую, нет?

Ситуация такая: делаю окно, оно НЕ topmost, и оно должно оставаться на экране при нажатии Win+M и Win+D. Сейчас проверяю на Win7, но должно работать для любой.
Win+M вроде победил, а вот со вторым... Не могу понять как вообще работает Win+D - окну не приходят сообщения которые я логически ожидал при сворачивании/перемещении. А если как-то и получается заметить что свернули - не выходит запретить сворачивание.
Есть стандартная программа которая имеет нужное поведение, но Spy++ вообще не может ничего в ней отловить, даже под админом (первый раз такое увидел).

Кто-то сталкивался с вопросом?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.09.2015, 03:49
Ответы с готовыми решениями:

Сделать несворачивающееся окно (по Win+D) [not topmost]
Чисто WinAPI, язык не принципиален. Ситуация такая: делаю окно, оно НЕ topmost, и оно должно оставаться на экране при нажатии Win+M и...

Окно всегда сверху (super topmost)
Добрый день, уважаемые. Существует АРМ оператора нефтеперекачивающей станции. У этого АРМа очень кривая система сообщений и есть...

Ссылка на окно в ос WIN
Cоздать приложение, которое определяет открыто ли окно класса зарегистрированного в ос windws как 'TForm1' Нашёл тему, вроде бы понял как...

26
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
09.09.2015, 02:27
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от UI-Maker Посмотреть сообщение
Я продолжаю искать решения. Плюс повторяю:
вопрос не что именно делает Win+D, а как сделать чтоб окно не реагировало на него
Блин.
Если ты захочешь вывести одно своё окно на передний план, то как об этом узнают все другие твои окна?
Ну продолжай искать решение "там где светло".
0
39 / 39 / 11
Регистрация: 05.09.2015
Сообщений: 262
09.09.2015, 02:31  [ТС]
эмм... И причём же тут это? С этим как раз нет никаких проблем.
Проблема что при нажатии Win+D окна пропадают. А не должны.
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
09.09.2015, 02:38
Цитата Сообщение от UI-Maker Посмотреть сообщение
эмм... И причём же тут это? С этим как раз нет никаких проблем.
Проблема что при нажатии Win+D окна пропадают. А не должны.
Проблема, извини, в твоей неграмотности. Окна никогда никуда не пропадают. Просто все окна, грубо говоря, есть дочерние окна Проводника (Explorer'а). И рабочий стол такое же его дочернее окно как и все прочие.
0
39 / 39 / 11
Регистрация: 05.09.2015
Сообщений: 262
09.09.2015, 02:59  [ТС]
ёпрст... Мне это всё известно. Под "пропадают" имелось ввиду - сворачиваются вместе с прочими, это же очевидно. Как запретить?
0
39 / 39 / 11
Регистрация: 05.09.2015
Сообщений: 262
22.09.2015, 03:19  [ТС]
Ап?
0
835 / 643 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
02.10.2015, 01:57
Делфи не знаю, но на VB6 работает так:
  1. Установить в дизайнере формы ShowInTaskbar = False
  2. Поменять родителя на рабочий стол при помощи SetWindowLongPtr
    Обращаю внимание, что функция SetParent работает по-другому и под заданный вопрос не подходит.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function GetParent Lib "user32" (ByVal hWnd As Long) As Long
 
Private Declare Function GetWindowLongPtr Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLongPtr Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
 
Private Const GWLP_HWNDPARENT As Integer = -8
 
Private Sub Form_Load()
  ' &H800F0 - это хендл рабочего стола, найденный при помощи Spy++
  'SetParent Me.hWnd, &H800F0
  SetWindowLongPtr Me.hWnd, GWLP_HWNDPARENT, &H800F0
End Sub
1
4 / 4 / 1
Регистрация: 23.01.2015
Сообщений: 330
03.10.2015, 16:07
Попробуй на событие onhide или что-то типо того поставить событие form1.show;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.10.2015, 16:07

Нужно закрыть модальное окно и сделать активным вызвавшее его окно
Мне нада средствами Win API закрыть модальное окно и сделать активным вызвавшее его окно. Кто знает как это сделать?

Как сделать так, что бы окно перемещалось когда разворачиваешь окно
Например я сделал ГУИ, в AS3 А вот как сделать что бы окна были связаны в окне, кто не поймёт в вот скрин

Сделать окно активным, закрыть окно, открыть в текущем окне
Появилась задача просматривать картинки (например обращаясь к xdg-open или через cacaview) и при этом продолжать работу в терминале. К...

CommandField: после действия в этом поле окно закрывается, как сделать чтоб окно оставалось открытым
Использую jquery чтоб открыть диалоговое окно по ссылке, в открываемом окне добавил GridView в нем есть поле CommandField после действия в...

Модальное окно, сделать загрузку в окно по ссылке
Привет всем нашел в интернете скрипт модального окна. Очень он мне подходит но есть одно но я хочу использовать несколько модальных окон...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru