Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
3 / 3 / 1
Регистрация: 20.03.2019
Сообщений: 150

Проблемы с ctrl+alt+del

11.09.2019, 16:09. Показов 1435. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Когда я нажимаю это сочетании клавиш у меня вызывается спец-окно и если я нажму что то кроме отмена то тогда все нормально. Но если я нажму отмена у меня показывается на долю секунду рабочий стол а потом приложение в полноэкранном режиме. Как можно избавится от этой задержки. Вот кот. Исправьте его пж
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
#include "windows.h"
#include <string>
 
HWND hwnd = NULL;
DWORD windowStyle = WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX;
int windowWidth = 1024;
int windowHeight = 768;
bool fullscreen = false;
 
// информация о положении окна в полноэкранном режиме и в оконном режиме
// положение окна должно задаваться при помощи функций SetWindowPlacement(),
// поскольку при вызове функции SetWindowPos()
// положение окна будет установлено относительно текущего монитора
WINDOWPLACEMENT fullscreenPlacement = { 0 };
WINDOWPLACEMENT windowedPlacement = { 0 };
 
// меняем разрешение монитора на разрешение окна
void setMonitorFullscreen()
{
    DEVMODE devMode = { 0 };
 
    devMode.dmSize = sizeof(DEVMODE);
    devMode.dmPelsWidth = windowWidth;
    devMode.dmPelsHeight = windowHeight;
    devMode.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
 
    ChangeDisplaySettings(&devMode, CDS_FULLSCREEN);
}
 
// восстанавливам разрешение монитора
void setMonitorWindowed()
{
    ChangeDisplaySettings(NULL, 0);
}
 
// получить текущее разрешение монитора
void getMonitorSize(int& width, int& height)
{
    DEVMODE devMode = { 0 };
 
    devMode.dmSize = sizeof(DEVMODE);
 
    EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &devMode);
 
    width = devMode.dmPelsWidth;
    height = devMode.dmPelsHeight;
}
 
void setWindowFullscreen()
{
    // сохраним расположение окна с рамкой
    windowedPlacement.length = sizeof(WINDOWPLACEMENT);
    GetWindowPlacement(hwnd, &windowedPlacement);
 
    setMonitorFullscreen();
 
    SetWindowLong(hwnd, GWL_STYLE, WS_POPUP); // убираем у окна рамку
    SetWindowPos(hwnd, HWND_TOP, 0, 0, windowWidth, windowHeight, SWP_SHOWWINDOW);
 
    // сохраним расположение окна в полноэкранном режиме
    fullscreenPlacement.length = sizeof(WINDOWPLACEMENT);
    GetWindowPlacement(hwnd, &fullscreenPlacement);
}
 
void setWindowBordered()
{
    setMonitorWindowed();
 
    // настройка стилей и размеров окна должна производиться ПОСЛЕ IDXGISwapChain::SetFullscreenState(false),
    // иначе окно не сможет правильно изменить свой размер
    // размер окна будет ограничен текущим разрешением монитора
 
    SetWindowLong(hwnd, GWL_STYLE, windowStyle); // устанавливаем у окна рамку(если есть)
    SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW);
 
    // восстанавливаем расположение окна с рамкой
    SetWindowPlacement(hwnd, &windowedPlacement);
}
 
void switchFullscreen()
{
    fullscreen = !fullscreen;
 
    if (fullscreen)
    {
        setWindowFullscreen();
    }
    else
    {
        setWindowBordered();
    }
}
 
LRESULT WINAPI MsgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    LRESULT result = 0;
 
    switch (msg)
    {
    case WM_KEYDOWN:
        switch (wParam)
        {
        case 0x46: // нажата кнопка F
            switchFullscreen();
            break;
        default:
            break;
        }
        break;
 
    case WM_ACTIVATE:
        if (fullscreen && IsIconic(hwnd) && WA_ACTIVE == LOWORD(wParam))
        {
            setMonitorFullscreen();
            SetWindowPlacement(hwnd, &fullscreenPlacement);
        }
        if (fullscreen && !IsIconic(hwnd) && WA_INACTIVE == LOWORD(wParam))
        {
            setMonitorWindowed();
            ShowWindow(hwnd, SW_SHOWMINNOACTIVE);
        }
        break;
 
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        break;
    }
 
    return DefWindowProc(hWnd, msg, wParam, lParam);
}
 
HWND createWindow(int width, int height)
{
    // Register the window class
    HINSTANCE hInstance = GetModuleHandle(NULL);
    HCURSOR hCursor = LoadCursor(hInstance, IDC_ARROW);
 
    // задаем для задника окна черный цвет
    LOGBRUSH logbrush = { BS_SOLID, RGB(0, 0, 0), 0 };
    HBRUSH hbrBackground = CreateBrushIndirect(&logbrush);
    const wchar_t* windowClassName = L"DXGUI Window";
    const wchar_t* caption = L"DXGUI Window";
 
WNDCLASSEX wndclass;
wndclass.cbSize = sizeof(wndclass);
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = MsgProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = windowClassName;
wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION); 
 
    RegisterClassEx(&wndclass);
 
    int monitorWidth;
    int monitorHeight;
 
    getMonitorSize(monitorWidth, monitorHeight);
 
    // если размер окна равен разрешению монитора,
    // то у окна убираем рамку
    if (width == monitorWidth && height == monitorHeight)
    {
        windowStyle = WS_POPUP;
    }
 
    // установим размер окна таким, 
    // чтобы клиентская область имела размер width на height
    RECT windowRect;
 
    SetRect(&windowRect, 0, 0, width, height);
    AdjustWindowRect(&windowRect, windowStyle, FALSE);
 
    int windowWidth = windowRect.right - windowRect.left;
    int windowHeight = windowRect.bottom - windowRect.top;
 
    // располагаем окно в центре экрана
    int x = (monitorWidth - windowWidth) / 2;
    int y = (monitorHeight - windowHeight) / 2;
 
    return CreateWindow(windowClassName,
        caption,
        windowStyle,
        x,
        y,
        windowWidth,
        windowHeight,
        NULL, NULL, wndclass.hInstance, NULL);
}
 
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    hwnd = createWindow(windowWidth, windowHeight);
 
    windowedPlacement.length = sizeof(WINDOWPLACEMENT);
    GetWindowPlacement(hwnd, &windowedPlacement);
 
    ShowWindow(hwnd, nCmdShow);
    UpdateWindow(hwnd);
 
    MSG msg;
    while (true)
    {
        if (PeekMessageW(&msg, NULL, 0, 0, PM_REMOVE))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
 
            if (WM_QUIT == msg.message)
            {
                break;
            }
        }
    }
 
    return (int)msg.wParam;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.09.2019, 16:09
Ответы с готовыми решениями:

График как ctr+alt+del
Можно ли из какойто функции изьять информацию о загруженности сети (вкладка СЕТЬ) И еще можно ли извель как то график ?

Окно безопасного входа в систему Windows XP (требующего нажать Ctrl-Alt-Del) зависает при нажатии Ctrl-Alt-Del
Здравствуйте. Недавно столкнулся с проблемой. Есть компьютер, подключенный к домену, в групповой политике прописано требование нажать...

Отключить функциональность клавиш Alt+Tab, Alt+F4, Ctrl+Alt+Del
Всем привет! Как мне в программе написаной в PureBasic отключить функциональность клавишь Alt+Tab, Alt+F4, Ctrl+Alt+Del чтоб с этой...

3
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
11.09.2019, 16:55
Цитата Сообщение от Zumhad Посмотреть сообщение
Когда я нажимаю это сочетании клавиш у меня вызывается спец-окно и если я нажму что то кроме отмена то тогда все нормально. Но если я нажму отмена у меня показывается на долю секунду рабочий стол а потом приложение в полноэкранном режиме. Как можно избавится от этой задержки. Вот кот. Исправьте его пж
Скорее всего, потому что там сначала приходит WM_ACTIVATE с WA_INACTIVE, а потом с WA_ACTIVE.

Может не надо по WA_INACTIVE сворачивать окно, а делать это по WM_SYSCOMMAND-SC_MINIMIZE, например?
0
3 / 3 / 1
Регистрация: 20.03.2019
Сообщений: 150
13.09.2019, 07:10  [ТС]
Можно кодом?
0
3 / 3 / 1
Регистрация: 20.03.2019
Сообщений: 150
13.09.2019, 19:57  [ТС]
oleg-m1973, так это понятно. А как сделать так допустим чтобы был ходя бы черный экран а не рабочий стол виден при открытии.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.09.2019, 19:57
Помогаю со студенческими работами здесь

Исходники для блокирования клавишь alt + F4,ctrl + alt+ del
У кого нить есть исходники для блокирования клавишь alt + F4,ctrl + alt+ del ? И для защиты компьютера от несанкционированного...

Как полностью отключить клавиатуру (ctrl+alt+del, alt+tab, win_пуск)?
Как выключит полныстю клавитуру (ctrl+alt+del, alt+tab, win_пуск)

Отключить клавиатуру (Ctrl+Alt+Del, Alt+Tab, Windows ... ) в WinXP, 2000 please
Ознакомившись с вопросом Zorina aka Zohira, я обратил внимание на Win9x !!!!! Братья программеры, помогите избавиться, раз и...

Нужен подсказщик в WinLock! Нужно отключить Alt+Tab, Ctrl+Alt+Del, Ctel+Shift+Esc !!!!!
Здравствуйте! Мне нужна помощь... Нужно отключить вот эти комбинации клавиш в WinLock: Alt+Tab, Ctrl+Alt+Del, Ctel+Shift+Esc Я...

Заблокировать Ctrl+Alt+Del
Собственно, попробовал повесить глобальный хук на Alt (LMenu, RMenu и Menu) и на Delete - ничего не сработало. У кого-то есть...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru