#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++.
Комментариев нет:
Отправить комментарий