10 нояб. 2022 г.

Как сохранить видимость окна, когда пользователь требует показать рабочий стол?

Источник: How do I make a window remain visible even when the user selects Show Desktop?
Автор: Рэймонд Чен.

 У клиента был вопрос:

Как сохранить видимость окна, даже когда пользователь выбрал команду Показать рабочий стол. Сейчас после команды Показать рабочий стол моё окно закрывается рабочим столом.

Гм, в этом и заключается цель команды Показать рабочий стол: показать рабочий стол и убрать все окна, которые закрывают его. Окна наподобие вашего. Сожалеем, что Windows не подготовлена для вашей потрясающей программы, так как нет способа выделить ваше окно, даже если пользователь требует показать рабочий стол вместо этого окна, отменить команду пользователя и всё равно показать окно. (Возможно, за этим скрывается приятный сюрприз.) В качестве утешения можно создать гаджет рабочего стола. Гаджеты - часть рабочего стола и появляются вместе с ним. При дальнейшем обсуждении оказалось, что клиент пытался написать программу-часы — самое то для гаджета. Другой клиент интересовался примерно тем же в замаскированном вопросе:

Я заметил, что гаджеты остаются на рабочем столе, даже когда пользователь выбирает команду Показать рабочий стол. Как это работает? Каким образом гаджет остаётся на рабочем столе? В чём хитрость?

Это был довольно странный вопрос по каналу клиентов. Возможно, это не было праздным любопытством. Из праздного любопытства не создаётся запрос в техподдержку.

(Я видел запросы в техподдержку, превратившиеся в праздное любопытство. После получения ответа на свой вопрос клиент решил, что раз уж он обратился в техподдержку, то может задать ещё пару вопросов из праздного любопытства. Это не относится к данному случаю, поскольку клиент начал с вопроса.)

“Хитрость” в том, что гаджеты и рабочий стол знают друг о друге, поэтому когда пользователь выбирает команду Показать рабочий стол, рабочий стол заслоняет все окна и затем размещает гаджеты на своей поверхности.

Вопрос клиента довольно странный, поскольку звучит следующим образом: “Система работает как X. В чём хитрость X?” Ответ получается тавтологическим: “Система работает как X, потому что цель разработки - X.”

Предполагаю, что у клиента есть некий секрет. Моё предположение следующее: он хочет написать программу, которая не будет заслоняться рабочим столом, когда пользователь выбирает команду Показать рабочий стол, и думает, что это возможно путём эмуляции поведения гаджетов.

Клиент liaison подтвердил, что именно это пытается сделать клиент, но при обсуждении с liaison также не раскрыл сценарий проблемы, которая внушила ему необходимость программы, которая не заслоняется рабочим столом, когда пользователь выбирает команду Показать рабочий стол. Клиент liaison вернулся с предложением сделать гаджет, чтобы получить специальное поведение, присущее гаджетам.

Комментариев нет:

Отправить комментарий