Re[3]: Кликнуть в скрытое окно
От: CEMb  
Дата: 02.08.19 06:11
Оценка:
Здравствуйте, Carc, Вы писали:

CEM>>Гипотеза: процесс окна проверяет у себя WS_VISIBLE.

CEM>>Ок, насколько я знаю, ShowWindow вызывает перерисовку, а SetWindowLong — нет. Поэтому можно попробовать "показать" окно через SetWindowLong(hWnd, GWL_STYLE, dwFlags | WS_VISIBLE), окно для глаз будет невидимо, но процесс будет считать, что оно видимо. Тут есть косяк: как только сменится страница — пойдёт перерисовка.
C>Не думаю, что это хорошая идея…
C>Потом кто-нибудь по пьяни или и вовсе вполне нормальный код позовет SetWindowPos + SWP_FRAMECHANGED, и тут оно вот оно! Окошко и прорисуется. Имхо, логичнее убрать окно с панели задач и задвинуть его за края видимого десктопа.
C>Ну разве что придется помедититировать на предмет дополнительных мониторов.
Ну можно PrintWindow сделать, потом сразу убрать WS_VISIBLE
С убиранием окон за край экрана тоже могут быть проблемы: некоторые окна при передёргивании настроек десктопа (кто-то дёрнул за рубильник таскбар) норовят влезть обратно сами.
Я тут не так давно делал тумбнейлы (thumbnail) для винды до NT5 включительно, что важно, и с возможностью их смотреть и кликать(в родное окно через тумбнейл). Примерно та же задача, что у ТС, но только окна могут быть минимизированы. MS на это забил, у них в таскбаре если окно минимизировано, показывается иконка. Но мы-то простых путей, блин, не ищем я взял бубен и через стили, таймеры и позиции делал незаметное восстановление-отрисовку-свёртывание окна, в результате у меня даже что-то работало, хотя мелькания иногда были, поэтому релиз так и не случился В том числе и из-за Internet Explorer, у которого PrintWindow даже на статичном окне срабатывает почему-то не всегда.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.