Как закрепить окно программы на рабочем столе

Содержание

Я работаю над базовым настольным приложением на С++/Win32.

Моя цель сейчас — создать базовое приложение для заметок, которое будет прикрепляться/приклеиваться к рабочему столу, то есть всегда перед рабочим столом, но всегда позади любого другого приложения. Это действительно личный проект, просто чтобы бороться с моей плохой памятью и чтобы мои задачи / заметки всегда были видны на рабочем столе, чтобы я не мог пропустить их при запуске компьютера и так далее.

Поведение, к которому я стремлюсь, будет похоже на заборы Stardock («вроде», потому что я не собираюсь хранить там какие-либо значки на рабочем столе, но, надеюсь, вы поняли идею)

Я начал с пример кода из документов по началу работы с Win32 и C++, чтобы получить самые базовая минимальная установка окна Win32.

Что я получил на данный момент:

  1. Мне удалось сохранить свое окно внизу всех других приложений и перед рабочим столом, вызвав SetWindowPos в оконной процедуре ( WindowProc ) при обработке события WM_SETFOCUS ( Сначала я попытался использовать событие WM_WINDOWPOSCHANGING , как предложено в этом ответе, но это привело к раздражающему мерцанию при перетаскивании окно).

case WM_SETFOCUS: SetWindowPos(hwnd, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); return 0;

  1. Проблема: мое окно остается перед рабочим столом, кроме тех случаев, когда я нажимаю кнопку «Показать рабочий стол». на панели задач (или нажмите ярлык Windows + D ). Поскольку я сам часто использую этот ярлык, я бы хотел, чтобы мое окно оставалось на рабочем столе, несмотря ни на что.
  2. Недостаточно удовлетворительное, но все же кое-что, что мне удалось сделать, это вернуть мое окно перед рабочим столом при нажатии на любое другое окно после нажатия Windows + D (это в основном имеет смысл с несколькими мониторами, например, при открытии случайного приложения на первом экране мое собственное приложение вернется к рабочему столу на другом экране). Я мог бы сделать это, используя на этот раз событие WM_SIZE и вызывая ShowWindow , а затем SetWindowPos , все еще в WindowProc

case WM_SIZE: ShowWindow(hwnd, SW_SHOWNORMAL); SetWindowPos(hwnd, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); return 0;

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

Читайте также:
Прекращена работа программы проводник ошибка

Как закрепить окно поверх всех окон в Windows | DeskPins

Что я пробовал:

Я проверил эти ответы, но не мог понять, как добиться того, чего я хочу.

  1. Как сделать окно «всегда на дне»
  2. Окно «на рабочем столе»: обратите внимание на это, я попробовал трюк с SetParent , например это в wWinMain

HWND desktop = FindWindow(L»ProgMan», L»Program Manager»); if (desktop == NULL) < return 0; >ShowWindow(hwnd, nCmdShow); SetParent(hwnd, desktop);

Однако с этим мое приложение больше не отображается, хотя FindWindow вернул не NULL , а фактический дескриптор.

  1. Сделайте приложение всегда внизу (прикрепленным к рабочему столу, за всеми другими приложениями) в C++/WinAPI [дубликат]
  2. Отключить кнопки «Свернуть», «Развернуть», «Закрыть» в Win32 Я пробовал » перехватить» событие «Показать рабочий стол», но кажется, что это событие не запускается с действием «Показать рабочий стол».

Я что-то пропустил ?

Telroshan 26 Ноя 2020 в 22:38
Вы обрабатываете сообщение WM_WINDOWPOSCHANGING ?
Nik Bougalis
26 Ноя 2020 в 22:47

WM_WINDOWPOSCHANGING , вероятно, то, что вы хотите использовать. Установите флаг SWP_NOZORDER , чтобы остановить изменение z-порядка. Show Desktop, по-видимому, реализуется путем перемещения окон за пределы экрана на -32000, -32000, поэтому вы должны иметь возможность проверить это и установить SWP_NOMOVE , чтобы предотвратить это.

Jonathan Potter
26 Ноя 2020 в 23:03

Спасибо за ваши ответы, я попытался обработать WM_WINDOWPOSCHANGING с помощью следующего кода: cpp case WM_WINDOWPOSCHANGING: SetWindowPos(hwnd, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER); return 0; (Кажется, я не могу правильно отформатировать этот комментарий, извините ) Однако поведение остается прежним; при нажатии Windows + D или нажатии кнопки на рабочем столе окно скрывается:/ Я что-то пропустил?

27 Ноя 2020 в 02:23

Нет, вы не звоните SetWindowPos в ответ на это сообщение. Вы изменяете параметры структуры WINDOWPOS , которые она вам передает. См. документацию.

Jonathan Potter
27 Ноя 2020 в 02:36
28 Ноя 2020 в 20:19

1 ответ

Лучший ответ

ПРИМЕЧАНИЕ: окно без стиля WS_MINIMIZEBOX , кажется, не получает событие WINDOWPOSCHANGING при нажатии Windows + D. Таким образом, в этом случае не обнаружено -32 000 координат. Также замечено та же проблема при использовании стиля ex WS_EX_TOOLWINDOW (поскольку он избавляется от поля минимизации, даже если вы устанавливаете флаг стиля WS_MINIMIZEBOX ). Не нашел решения для этого случая, поэтому я придерживаюсь перекрывающегося окна.

Чтобы предотвратить это перемещение, просто установите флаги SWP_NOMOVE и SWP_NOSIZE на странице WINDOWPOS передается в lParam

Таким образом, в конечном итоге для достижения желаемого поведения (т. е. всегда за каждым другим окном, но всегда перед рабочим столом) единственный необходимый код для добавления в образец документа приведен ниже и помещен в оконную процедуру Оператор switch WindowProc :

РЕДАКТИРОВАТЬ : лучшее место для форсирования порядка Z с помощью HWND_BOTTOM , чтобы гарантировать, что окно всегда находится внизу, также находится в событии WM_WINDOWPOSCHANGING . Действительно, вызов SetWindowPos для его принудительного включения в событии WM_SIZE при перетаскивании окна, как я делал ранее, вызывает некоторое мерцание окна при изменении его размера, в то время как мерцание отсутствует. происходит при прямой установке свойства hwndInsertAfter структуры WINDOWPOS в WM_WINDOWPOSCHANGING .

Читайте также:
Формат tif какая программа

case WM_WINDOWPOSCHANGING: < WINDOWPOS* pos = (WINDOWPOS*)lParam; // Show desktop (Windows + D) results in the window moved to -32000, -32000 and size changed if (pos->x == -32000) < // Set the flags to prevent this and «survive» to the desktop toggle pos->flags |= SWP_NOMOVE | SWP_NOSIZE; > // Also force the z order to ensure the window is always on bottom pos->hwndInsertAfter = HWND_BOTTOM; return 0; >

Источник: question-it.com

Как закрепить программу на рабочем столе в Windows 8?

Как закрепить приложение на рабочем столе в Windows 8?

Закрепление приложений и папок на рабочем столе или на панели задач

  1. Нажмите и удерживайте (или щелкните правой кнопкой мыши) приложение, а затем выберите «Еще» Брать на заметку.
  2. Если приложение уже открыто на рабочем столе, нажмите и удерживайте (или щелкните правой кнопкой мыши) кнопку панели задач приложения, а затем выберите «Закрепить на панели задач».

Как закрепить окно на рабочем столе?

Щелкните значок DeskPins на панели задач, расположенный в правом нижнем углу рабочего стола. Курсор становится булавкой (по умолчанию красный или в зависимости от цвета, выбранного в параметрах). Переместите курсор-булавку (как обычный курсор) в окно, которое вы хотите закрепить вверху. Щелкните левой кнопкой мыши, чтобы закрепить окно.

Что такое горячая клавиша для рабочего стола?

Вот список сочетаний клавиш для Windows 10

Нажмите эту клавишуДля этого
Alt + Tab Переключение между открытыми приложениями
Alt + F4 Закройте активный элемент или выйдите из активного приложения
Клавиша с логотипом Windows + L Блокировка компьютера или переключение учетных записей
Клавиша с логотипом Windows + D Отображение и скрытие рабочего стола

Как разместить слово на моем рабочем столе?

Нажмите клавишу Windows, а затем перейдите к программе Office, для которой вы хотите создать ярлык на рабочем столе. Щелкните правой кнопкой мыши имя программы или плитку и выберите «Открыть расположение файла». Щелкните имя программы правой кнопкой мыши и выберите Отправить Рабочий стол (Создать ярлык). Ярлык программы появится на вашем рабочем столе.

См. Также Лучший ответ: как удалить приложения из библиотеки iOS 14?

Как закрепить ярлык в меню «Пуск» в Windows 8?

В меню «Пуск» щелкните правой кнопкой мыши пустое место или значок. После этого выберите Все приложения в правом нижнем углу. Шаг 2. Закрепите программу в меню «Пуск». На экране приложений найдите и щелкните правой кнопкой мыши программу, которую хотите закрепить в меню «Пуск», а затем нажмите кнопку «Прикрепить к пуску» в нижнем левом углу.

Как закрепить файл на панели задач?

Как закрепить файлы на панели задач Windows

  1. Откройте проводник (окно, которое позволяет вам увидеть, где сохранены ваши файлы.)…
  2. Щелкните правой кнопкой мыши документ, который нужно закрепить на панели задач. …
  3. Измените. …
  4. Щелкните правой кнопкой мыши документ, теперь это файл.exe, и выберите «Закрепить на панели задач».

Почему я не могу закрепить некоторые программы на панели задач?

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

Читайте также:
Программа определяющая кто звонит по номеру телефона для айфона

Источник: linkeyprod.fr

Как закрепить окно браузера на рабочем столе?

Запустите скрипт (просто двойным кликом) и теперь, когда вы в активном окне нажмете Ctrl+Shift+Пробел, оно будет отображаться поверх других окон до следующего нажатия этой же комбинации клавиш.

Как закрепить вкладку на переднем плане?

Дабы расположить какое-то окно на переднем плане используете комбинацию горячих клавиш «Ctrl + Пробел». Отключение опции производится аналогичным образом. Выход осуществляется через контекстное меню после клика на иконке в трее.

Как использовать DeskPins?

Пользоваться DeskPins очень просто – нажимаем левой кнопкой мыши по значку программы в трее, после чего курсор превратится в булавку. Теперь наводим курсор на заголовок окна, которое нужно прикрепить и еще раз кликаем по нему. Все, мы прикололи окно, и оно будет находиться поверх всех остальных программ.

Как сделать чтобы плеер был поверх всех окон?

Перейдите в параметры приложения выбрав Контекстное меню > Дополнительные возможности > Проигрыватель можно отметить Отображать проигрыватель поверх остальных окон.

Как включить наложение поверх других окон андроид 10?

Попробуйте Настройки>Приложения>Вверху будет шестеренка её нажать> В открывшемся списке наложение поверх окон, как то так.

Как сделать поверх других приложений?

Здравствуйте, на устройстве с чистым Android 6.0 необходимо зайти в «Настройки» → «Приложения», затем кликнуть по значку шестеренок, расположенному в правом верхнем углу и выбрать «Наложение поверх других окон».

Как вывести окно на передний план Windows 10?

Как вывести окно на передний план Windows 10? Это означает, что вы можете Alt + Tab к окну желаемого приложения; затем нажмите Alt +, ` чтобы вывести все остальные окна на передний план.

Как закрепить окно поверх других в Windows 7?

Как таковая она не имеет графического интерфейса, только иконку в трее. Для того, чтобы закрепить программу поверх остальных, просто нажмите на значок DeskPins в трее левой кнопкой мыши (можно и правой, после чего во всплывающем меню выберите пункт «Enter pin mode»):

Как сделать чтобы окна не перекрывали друг друга?

Прежде всего закрепить окно поверх других можно при помощи команды Window Position. Далее вам нужно выбрать интересующее окно и нажать TopMost. Если вы использовали эту опцию для нескольких окон, то они не будут перекрывать друг друга.

Как сделать видео с ютуба поверх всех окон?

  1. Перейдите в настройки устройства Приложения и уведомления Дополнительные настройки Специальный доступ Картинка в картинке.
  2. Выберите YouTube.
  3. Нажмите на переключатель в разделе Поддержка режима «Картинка в картинке».

Как перейти от одного окна к другому?

  1. Alt + Tab. Нажмите и удерживайте Alt, потом нажимайте Tab. На появившейся панели появятся превью открытых у вас окон, активное будет меняться по нажатию Tab.
  2. Ctrl + Alt + Tab. Переключатель окон автоматически закрывается, когда вы отпускаете Alt, но эта комбинация делает его постоянно открытым.

Как сделать панель задач поверх всех окон Windows 10?

В открывшемся контекстном меню выберите «Параметры панели». Появится окно, где отображаются все настройки, касающиеся этого визуального элемента. Установите в положение «Вкл» пункт автоматического скрытия панели, как это показано на скриншоте.

Источник: fortune-project.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru