#winapi
Чисто WinAPI, язык не принципиален.
Ситуация такая: делаю окно, оно НЕ topmost, и оно должно оставаться на экране при
нажатии Win+M и Win+D. Сейчас проверяю на Win7, но должно работать для любой.
Win+M вроде победил, а вот со вторым... Не могу понять, как вообще работает Win+D
- окну не приходят сообщения, которые я логически ожидал при сворачивании/перемещении.
А если как-то и получается заметить что свернули - не выходит запретить сворачивание.
Есть стандартная программа, которая имеет нужное поведение, но Spy++ вообще не может
ничего в ней отловить, даже под админом (первый раз такое увидел).
Проблема, что при нажатии Win+D окна пропадают (сворачиваются). А не должны. Кто-то
сталкивался с вопросом?
P.S. Возможно следует использовать какие-то новые интерфейсы оболочки Shell или DWM,
но никак не найду какие. :(
Ответы
Ответ 1
Надо изменить родительское окно, чтобы оно принадлежало Рабочему столу. Также может понадобиться предварительно отключить его отображение на панели задач. SetWindowLongPtr Me.hWnd, GWLP_HWNDPARENT, &H800F0 Где &H800F0 - это хэндл рабочего стола. Обращаю внимание, что вариант SetParent Me.hWnd, &H800F0 не годится, поскольку он делает окно частью рабочего стола, и любые (даже неактивные) окна будут отображаться поверх него. PS: Проверял на VB6, пришлось ещё в дизайнере формы выставить ShowInTaskbar = False, в противном случае окно сворачивается. Хендл рабочего стола узнал при помощи Spy++.
Комментариев нет:
Отправить комментарий