Есть ли способ всегда рисовать прозрачное приложение WPF поверх рабочего стола? - PullRequest
0 голосов
/ 05 октября 2019

Есть ли способ заставить приложение WPF сохраняться поверх рабочего стола, когда на окнах используется ярлык show desktop (WINDOWS+D)?

Я пытаюсь создать приложение для наложения рабочего стола с виджетами. (Same concept as rainmeter) В настоящее время я использую функции в user32.dll, чтобы держать окно в верхней части рабочего стола.

Это прекрасно работает, пока я не использую WINDOWS+D

Я пробовал:

  • В окне «Деактивированное событие», вставляя позицию окна вышепозиция рабочего стола

  • Родительское окно к рабочему столу

Будем благодарны за любые предложения!

1 Ответ

3 голосов
/ 05 октября 2019

Один (возможно, грязный) способ состоит в том, чтобы зарегистрировать горячую клавишу для захвата вызова WIN + D, как предлагается в этом ответе: https://stackoverflow.com/a/824395/12167858

Если у вас есть способ перехватить горячую клавишу, вы можете узнатьзапускается ли его триггерное событие до или после собственного ответа WIN + D (показывая рабочий стол).

Я сам еще не проверял это, однако, если оно срабатывает после Родной ответ, вы готовы идти. В противном случае, если такое решение будет приемлемым, вы можете использовать Task.Delay (), чтобы дождаться, пока Windows закончит сворачивать все видимые окна.

/ edit: я забыл критическую часть: как только вы убедились, чтоWindows закончила свою работу, вызовите код ниже (как предложено здесь: https://stackoverflow.com/a/6837421/12167858), чтобы вернуть окно в исходное состояние:

if (myWindow.WindowState == WindowState.Minimized)
myWindow.WindowState = WindowState.Normal;
...