Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
4 / 4 / 4
Регистрация: 22.03.2012
Сообщений: 73
1

Отмена сворачивания окна

05.04.2013, 13:50. Показов 1978. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Никак не могу найти способа избежать сворачивания/скрытия окна при нажатии Win+D ("Скрыть все окна") и Win+M.

Возможно кто-то уже решал подобную проблему, подскажите, куда мне копать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.04.2013, 13:50
Ответы с готовыми решениями:

Обновление содержимого окна после сворачивания в трей
Есть окно, в какой-то момент времени циклически там запускается заполнение прогресс бара и еще...

Отмена сворачивания Activity
Пишу своеобразный будильник, вроде все нормально, но при его срабатывании, выскакивает activity...

Запрет сворачивания окна
Доброго времени суток. После загрузки файла окно автоматически сворачивается (но его можно снова...

Перехват сворачивания окна
подскажите как можно перехватить сворачивание чужого окна, я так понимаю перехватывать надо...

7
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,245
05.04.2013, 13:54 2
TopMost=true в свойствах формы не помогает?
0
4 / 4 / 4
Регистрация: 22.03.2012
Сообщений: 73
05.04.2013, 14:02  [ТС] 3
Спасло от Win+M, а Win+D срабатывает. По статьям почитал, что это не свертывание, а что-то типа уборки форм за рабочий стол, вот как этого избежать никто не написал(
0
4 / 4 / 4
Регистрация: 22.03.2012
Сообщений: 73
08.04.2013, 11:53  [ТС] 4
На данный момент обнаружилась интересная штука:
при нажатии Win+D срабатывает событие onStateChanged, проблема оказалась в другом, никак не удается написать обработчик, чтобы форма снова отобразилась кроме как последовательное выполнение
this.Hide();
this.ShowDialog(); { this.Show() - не отображает форму. }
При этом, что интересно, Win+D в дальнейшем вообще перестает работать для любых форм, после закрытия моего приложения начинает срабатывать.

Есть ли у кого-нибудь идеи, как выкрутиться из ситуации?
0
4 / 4 / 4
Регистрация: 22.03.2012
Сообщений: 73
11.04.2013, 17:16  [ТС] 5
Я опять со своими баранами, начал копать WinAPI. написал процедуру для определения позиции окна, вот, что получилось:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr GetDesktopWindow();
        
[DllImport("user32.dll")]
public static extern bool SetWindowPos(int hWnd, int hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
 
public const int GW_HWNDPREV = 2;
public const uint SWP_NOSIZE = 0x1;
public const uint SWP_NOMOVE = 0x2;
public const uint SWP_SHOWWINDOW = 0x40;
 
private void ShowToDesc()
{           
    SetWindowPos((int)this.Handle, (int)GetDesktopWindow(), 0, 0, 0, 0, SWP_NOMOVE |
                   SWP_NOSIZE | SWP_SHOWWINDOW);
}
Но теперь окно отрисовывается всегда впереди остальных окон, а нужно наоборот позади остальных, но впереди рабочего стола. Если (int)GetDesktopWindow() поменять на 1, то до нажатия Win+D окно прорисовывается позади всех окон, но после нажитии Win+D не восстанавливается вообще, пока второй раз Win+D не нажмешь, или не активируешь другое окно.

Встала задача определить, является ли рабочий стол первым в z-последовательности окон.
Думал воспользоваться функцией IntPtr GetNextWindow(IntPtr hWnd, uint Command), чтобы определить
C#
1
if (GetNextWindow(GetDesktopWindow(), 2) == null) s = "рабочий стол наверху";
Но видимо я не понял принцип работы этой функции.

Может кто-нибудь подсказать, как по дескриптору рабочего стола определить его позицию в z-последовательности?
0
MЫW
124 / 109 / 9
Регистрация: 15.02.2013
Сообщений: 538
11.04.2013, 21:19 6
А не легче на OnStateChanged просто менять его обратно?
0
4 / 4 / 4
Регистрация: 22.03.2012
Сообщений: 73
12.04.2013, 08:53  [ТС] 7
Про OnStateChanged я погорячился, не срабатывает оно(
0
MЫW
124 / 109 / 9
Регистрация: 15.02.2013
Сообщений: 538
12.04.2013, 13:13 8
А что если ловить эти win+m?
0
12.04.2013, 13:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.04.2013, 13:13
Помогаю со студенческими работами здесь

Сворачивания окна, trayicon и др.
Испульзую trayicon. Никак не могу найти функцию (что-то вроде) OnMinimize, в которой бы я...

Перерисовка окна после сворачивания
Здраствуйте! Прошу помощи! Написал программу, которая выводит картинку .bmp ,перетаскивается...

Счетчик сворачивания окна PyGame
Требуется вывод на экран кол-во сворачивании окна pygame.

Восстановление окна после сворачивания
В программе используются модули для работы с графикой GraphABC, ABCObjects. Если свернуть окно и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru