Я помогаю с проектом с открытым исходным кодом, используемым для обеспечения более удобного для пользователя способ управления объемом приложений и вывода в Windows, приложение называется earTrumpet, я не владелец проекта, но я хочу улучшить удобство использования приложения, так как я использую его лично. Полное приложение для полноэкранного приложения, такое как игра. < /p>
Мне сказали, что основная проблема заключается в том, что когда запуск вызывает начиная с Windows 10, меню «Пуск», «Панель задач» и т. Д. Пользовательская группа, как объяснено на следующей веб-странице:
https://blog.adeltax.com/window-z-order-in-windows-10/
Играл с каким -то грубым кодом, чтобы попытаться охватить различные сценарии, код будет очищен позже, как только проблема, на которой я застрял, как описано, исправлена. В коде есть TODO в качестве заполнителя для того, что, я думаю, должно произойти.
[*] Откройте игру Fullscreen < /li>
Нажмите клавишу Windows < /li>
Нажмите значок лотка управления громко
[*] Нажмите на полноэкранную игру
ожидаемый результат
> Game
исходный код
Код довольно длинный, поэтому я включил фрагменты того, что я Сделано до сих пор. < /p>
if (_delayFocusCheckTimer)
{
while (this.Visibility != Visibility.Visible)
{
// Give the floating window time to open.
await Task.Delay(250);
}
_delayFocusCheckTimer = false;
}
// Hide the floating window when it loses focus
this.Deactivated += (_, args) => { this.Hide(); };
this.PreviewLostKeyboardFocus += (_, __) => { this.Hide(); };
this.PreviewKeyDown += FlyoutWindow_PreviewKeyDown;
this.MouseDown += FlyoutWindow_MouseDown;
// Timer to check if the floating window is focused or not (in case of Windows key press)
var focusCheckTimer = new System.Windows.Threading.DispatcherTimer(DispatcherPriority.ApplicationIdle)
{
Interval = TimeSpan.FromMilliseconds(250)
};
focusCheckTimer.Tick += (_, __) =>
{
if (!this.IsFocused)
{
this.Hide();
focusCheckTimer.Stop();
}
};
focusCheckTimer.Start();
< /code>
private bool IsMouseOverFlyoutWindow()
{
var rect = new Rect(this.Left, this.Top, this.Width, this.Height);
return rect.Contains(Mouse.GetPosition(this));
}
private void FlyoutWindow_MouseDown(object sender, MouseButtonEventArgs e)
{
if (!IsMouseOverFlyoutWindow())
{
//TODO: Need to detect clicks
this.Hide();
}
}
private void FlyoutWindow_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.LWin || e.Key == Key.RWin) // Left or Right Windows Key
{
this.Hide();
}
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... is-clicked
Укрытие окна, когда открывается меню Windows, и нажимается значок лотка, а затем пользователь нажимает на полноэкранное ⇐ C#
Место общения программистов C#
1739491964
Anonymous
Я помогаю с проектом с открытым исходным кодом, используемым для обеспечения более удобного для пользователя способ управления объемом приложений и вывода в Windows, приложение называется earTrumpet, я не владелец проекта, но я хочу улучшить удобство использования приложения, так как я использую его лично. Полное приложение для полноэкранного приложения, такое как игра. < /p>
Мне сказали, что основная проблема заключается в том, что когда запуск вызывает начиная с Windows 10, меню «Пуск», «Панель задач» и т. Д. Пользовательская группа, как объяснено на следующей веб-странице:
https://blog.adeltax.com/window-z-order-in-windows-10/
Играл с каким -то грубым кодом, чтобы попытаться охватить различные сценарии, код будет очищен позже, как только проблема, на которой я застрял, как описано, исправлена. В коде есть TODO в качестве заполнителя для того, что, я думаю, должно произойти.
[*] Откройте игру Fullscreen < /li>
Нажмите клавишу Windows < /li>
Нажмите значок лотка управления громко
[*] Нажмите на полноэкранную игру
[b] ожидаемый результат [/b]
> Game
[b] исходный код [/b]
Код довольно длинный, поэтому я включил фрагменты того, что я Сделано до сих пор. < /p>
if (_delayFocusCheckTimer)
{
while (this.Visibility != Visibility.Visible)
{
// Give the floating window time to open.
await Task.Delay(250);
}
_delayFocusCheckTimer = false;
}
// Hide the floating window when it loses focus
this.Deactivated += (_, args) => { this.Hide(); };
this.PreviewLostKeyboardFocus += (_, __) => { this.Hide(); };
this.PreviewKeyDown += FlyoutWindow_PreviewKeyDown;
this.MouseDown += FlyoutWindow_MouseDown;
// Timer to check if the floating window is focused or not (in case of Windows key press)
var focusCheckTimer = new System.Windows.Threading.DispatcherTimer(DispatcherPriority.ApplicationIdle)
{
Interval = TimeSpan.FromMilliseconds(250)
};
focusCheckTimer.Tick += (_, __) =>
{
if (!this.IsFocused)
{
this.Hide();
focusCheckTimer.Stop();
}
};
focusCheckTimer.Start();
< /code>
private bool IsMouseOverFlyoutWindow()
{
var rect = new Rect(this.Left, this.Top, this.Width, this.Height);
return rect.Contains(Mouse.GetPosition(this));
}
private void FlyoutWindow_MouseDown(object sender, MouseButtonEventArgs e)
{
if (!IsMouseOverFlyoutWindow())
{
//TODO: Need to detect clicks
this.Hide();
}
}
private void FlyoutWindow_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.LWin || e.Key == Key.RWin) // Left or Right Windows Key
{
this.Hide();
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79437987/hiding-window-when-the-windows-start-menu-is-opened-and-a-tray-icon-is-clicked[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия