Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
169 / 99 / 25
Регистрация: 07.08.2016
Сообщений: 382
Записей в блоге: 1

События формы при нажатии Alt+Tab

09.11.2018, 20:16. Показов 2096. Ответов 2

Студворк — интернет-сервис помощи студентам
Разбираюсь с DirectX
Разобрался как сделать Полноценный переход из оконного режима в полноэкранный и обратно.
Но столкнулся с новой задачей.
Не знаю какие события приходят форме, когда форма находится в полноэкранном режиме и нажимается альт+таб.
Пробовал использовать фокус - LostFocus и GotFocus. Не получается
Думаю есть еще события о которых я не знаю.
Нужно отметить что "полноэкранный" режим отличается разрешением от оконного.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.11.2018, 20:16
Ответы с готовыми решениями:

Вывод меседжбокс при нажатии на Ctrl+Alt+Enter
А можно ли сделать из трех клавиш? Например как сделать, чтобы при нажатии Ctrl+Alt+Enter выводился меседжбокс? не нужно гробокопанием...

Как сделать так, чтобы программа не закрывалась при нажатии ALT+F4
У меня Visual Basic 2010 как сделать в нем так, чтобы созданная программа не закрывалась при нажатии Alt+F4?

Эмулировать нажатие сочетания клавиш Alt+Tab
Всем привет! Как сэмулировать нажатие сочетания клавиш Alt+Tab, для появления окна с запущенными приложениями?

2
169 / 99 / 25
Регистрация: 07.08.2016
Сообщений: 382
Записей в блоге: 1
11.11.2018, 21:44  [ТС]
Лучший ответ Сообщение было отмечено ViterAlex как решение

Решение

Решил найдя пример обработки сочетаний клавиш в WiN iP.
Может и еще кому пригодится
VB.NET
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
Public Class Form1
 
    Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Integer, ByVal lpfn As LowLevelKeyboardProcDelegate,
                                                                              ByVal hMod As IntPtr, ByVal dwThreadId As Integer) As Integer
    Declare Function UnhookWindowsHookEx Lib "user32" Alias "UnhookWindowsHookEx" (ByVal hHook As IntPtr) As Boolean
    Declare Function CallNextHookEx Lib "user32" Alias "CallNextHookEx" (ByVal hHook As IntPtr, ByVal nCode As Integer, ByVal wParam As Integer,
                                                                         ByRef lParam As KBDLLHOOKSTRUCT) As Integer
    Delegate Function LowLevelKeyboardProcDelegate(ByVal nCode As Integer, ByVal wParam As Integer, ByRef lParam As KBDLLHOOKSTRUCT) As Integer
 
    Const WH_KEYBOARD_LL As Integer = 13 'CONTROLA LOS INPUTS DEL TECLADO
 
    'NECESARIA PARA LA FUNCION CallNextHookEx
    Structure KBDLLHOOKSTRUCT
        Dim vkCode As Integer
        Dim scanCode As Integer
        Dim flags As Integer
        Dim time As Integer
        Dim dwExtraInfo As Integer
    End Structure
 
    Dim TECLEADO As Integer 'RESULTADO DE LA FUNCION SetWindowsHookEx
 
    'CAMBIA EL COLOR SI ES PULSADO
    Private Sub ButtonALTTAB_Click(sender As System.Object, e As System.EventArgs) Handles ButtonALTTAB.Click
        If ButtonALTTAB.BackColor = Color.Black Then
            COLORES()
            ButtonALTTAB.BackColor = Color.Red
            TECLEADO = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, IntPtr.Zero, 0)
        Else
            ButtonALTTAB.BackColor = Color.Black
        End If
    End Sub
    'CAMBIA EL COLOR SI ES PULSADO
    Private Sub ButtonALTESC_Click(sender As System.Object, e As System.EventArgs) Handles ButtonALTESC.Click
        If ButtonALTESC.BackColor = Color.Black Then
            COLORES()
            ButtonALTESC.BackColor = Color.Red
            TECLEADO = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, IntPtr.Zero, 0)
        Else
            ButtonALTESC.BackColor = Color.Black
        End If
    End Sub
    'CAMBIA EL COLOR SI ES PULSADO
    Private Sub ButtonCTRLESC_Click(sender As System.Object, e As System.EventArgs) Handles ButtonCTRLESC.Click
        If ButtonCTRLESC.BackColor = Color.Black Then
            COLORES()
            ButtonCTRLESC.BackColor = Color.Red
            TECLEADO = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, IntPtr.Zero, 0)
        Else
            ButtonCTRLESC.BackColor = Color.Black
        End If
    End Sub
    'CAMBIA EL COLOR SI ES PULSADO
    Private Sub ButtonWIN_Click(sender As System.Object, e As System.EventArgs) Handles ButtonWIN.Click
        If ButtonWIN.BackColor = Color.Black Then
            COLORES()
            ButtonWIN.BackColor = Color.Red
            TECLEADO = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, IntPtr.Zero, 0)
        Else
            ButtonWIN.BackColor = Color.Black
        End If
    End Sub
    'CAMBIA EL COLOR SI ES PULSADO
    Private Sub ButtonTODAS_Click(sender As System.Object, e As System.EventArgs) Handles ButtonTODAS.Click
        If ButtonTODAS.BackColor = Color.Black Then
            COLORES()
            ButtonTODAS.BackColor = Color.Red
            TECLEADO = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, IntPtr.Zero, 0)
        Else
            ButtonTODAS.BackColor = Color.Black
        End If
    End Sub
 
    'BORRA LOS ROJOS ANTERIORES
    Public Sub COLORES()
        ButtonALTTAB.BackColor = Color.Black
        ButtonALTESC.BackColor = Color.Black
        ButtonCTRLESC.BackColor = Color.Black
        ButtonWIN.BackColor = Color.Black
        ButtonTODAS.BackColor = Color.Black
    End Sub
 
    Private Function LowLevelKeyboardProc(ByVal nCode As Integer, ByVal wParam As Integer, ByRef lParam As KBDLLHOOKSTRUCT) As Integer
 
        Dim ALTTAB As Boolean = ((lParam.vkCode = 9) AndAlso (lParam.flags = 32))  'PARA BLOQUEAR ALT+TAB
        Dim ALTESC As Boolean = ((lParam.vkCode = 27) AndAlso (lParam.flags = 32)) 'PARA BLOQUEAR ALT+ESC
        Dim CTRLESC As Boolean = ((lParam.vkCode = 27) AndAlso (lParam.flags = 0)) 'PARA BLOQUEAR CTRL+ESC
        Dim WIN As Boolean = ((lParam.vkCode = 91) AndAlso (lParam.flags = 1)) Or ((lParam.vkCode = 92) AndAlso (lParam.flags = 1)) 'PARA BLOQUEAR WIN L Y WIN R
 
        'PARA BLOQUEAR TODAS LAS ANTERIORES
        Dim TODAS As Boolean = ((lParam.vkCode = 9) AndAlso (lParam.flags = 32)) Or ((lParam.vkCode = 27) AndAlso (lParam.flags = 32)) Or
      ((lParam.vkCode = 27) AndAlso (lParam.flags = 0)) Or ((lParam.vkCode = 91) AndAlso (lParam.flags = 1)) Or ((lParam.vkCode = 92) AndAlso (lParam.flags = 1))
 
        'BLOQUEA ALT+TAB
        If ALTTAB = True And ButtonALTTAB.BackColor = Color.Red Then
            Return 1
            'BLOQUEA ALT+ESC
        ElseIf ALTESC = True And ButtonALTESC.BackColor = Color.Red Then
            Return 1
            'BLOQUEA CTRL+ESC
        ElseIf CTRLESC = True And ButtonCTRLESC.BackColor = Color.Red Then
            Return 1
            'BLOQUEA WIN L Y WIN R
        ElseIf WIN = True And ButtonWIN.BackColor = Color.Red Then
            Return 1
            'BLOQUEA TODAS LAS ANTERIORES
        ElseIf TODAS = True And ButtonTODAS.BackColor = Color.Red Then
            Return 1
        Else
            Return CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam)
        End If
    End Function
    'PARA ASEGURAR QUE NO QUEDE NADA BLOQUEADO EN EL TECLADO AL CERRAR LA APLICACION
    Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        UnhookWindowsHookEx(TECLEADO) 'PARA ASEGURAR QUE NO QUEDE NADA BLOQUEADO EN EL TECLADO AL CERRAR LA APLICACION
    End Sub
 
End Class
1
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
12.11.2018, 00:52
Цитата Сообщение от bbbw Посмотреть сообщение
пример обработки сочетаний клавиш в WiN iP.
Молодец, что нашёл. Технология называется Windows API (эй-пи-ай или апи)

Добавлено через 2 часа 21 минуту
Добавил твоё решение в Готовые решения и полезные коды на Visual Basic .NET (Часть-1)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.11.2018, 00:52
Помогаю со студенческими работами здесь

Как запретить вызов события Click при нажатии правой кнопки мыши
Доброго времени суток. Как в своём UserControl запретить вызов события Click при нажатии правой кнопки мыши? Перепробовал, наверно, все...

Как отключить события CheckBox при запуске формы
Привет! Как отключить события? Например, на форме есть чекбокс. Если этот чексбокс устанавливается программой, то не запускать события...

Перемещение по нужным TextBox по нажатии Tab
У меня на форме много ТестБоксов, ЧекБоксов и всего остального. Нужно при нажатии на Tab в TextBox1 переместиться в TextBox3. Как такое...

При нажатии на кнопку, менять свойство text у формы
1) При нажатие на кнопку, у меня менялось название (точней свойство text) в форме. Как это сделать?

Изменение цвета и шрифта кнопок формы при нажатии на кнопку
Изменение цвета и шрифта кнопок формы при нажатии на кнопку


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru