Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
644 / 472 / 38
Регистрация: 04.11.2013
Сообщений: 1,943
1

Горячие клавиши - Alt + кнопка мыши. Исправить код

05.01.2014, 20:31. Просмотров 1030. Ответов 4
Метки нет (Все метки)


Доброго времени!
Есть код для горячих клавиш с использованием библиотеки User32. В оригинале было только Alt+C и Alt+D, попробовал добавить Alt+rButton - не работает:

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
Public Class Form1
    Public Const MOD_ALT As Integer = &H1           'Alt key
    Public Const WM_HOTKEY As Integer = &H312       '
     
    Public Declare Function RegisterHotKey Lib "user32" (ByVal hwnd As IntPtr, ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) As Integer
 
    Public Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As IntPtr, ByVal id As Integer) As Integer
 
    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        If m.Msg = WM_HOTKEY Then
            Dim id As IntPtr = m.WParam
            Select Case (id.ToString)
                Case "100"
                    MessageBox.Show("You pressed ALT+D key combination")
                Case "200"
                    MessageBox.Show("You pressed ALT+C key combination")
                Case "300"
                    MessageBox.Show("You pressed ALT + RButton mouse button")
            End Select
        End If
        MyBase.WndProc(m)
    End Sub
 
    Private Sub Mouse_Form_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        UnregisterHotKey(Me.Handle, 100)
        UnregisterHotKey(Me.Handle, 200)
        UnregisterHotKey(Me.Handle, 300)
    End Sub
 
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        RegisterHotKey(Me.Handle, 100, MOD_ALT, Keys.D)
        RegisterHotKey(Me.Handle, 200, MOD_ALT, Keys.C)
        RegisterHotKey(Me.Handle, 300, MOD_ALT, Keys.RButton)
    End Sub
 
End Class
Alt+C и Alt+D работают нормально, а вот Alt+rButton (правая кнопка Мыши) - ноль внимания. Что не так?

Добавлено через 7 минут
П.С. VisualStudio 2010, win7 x64
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.01.2014, 20:31
Ответы с готовыми решениями:

Как сделать горячие клавиши в StripMenu
Как сделать горячие клавиши в StripMenu?

Горячие клавиши для свернутой в трей программы
Привет всем! Подскажите, пожалуйста, какую-нибудь нормальную реализацию вызова моей программы,...

Acer Acpire V3-551G (Windows 8 SL x64) не работает комб. alt+F10 (горячие клавиши восстановления)
Здравствуйте! Ноутбук был изрядно помучен установками различных windows, 7,8 скаченных в сети....

Подключение мыши с помощью прерываний 0х33 - горячие клавиши
Здравствуйте! Я пишу 16 разрядное приложение под ДОС на чистом С с ассемблерными вставками. Делаю...

4
Почетный модератор
Эксперт .NET
8691 / 3643 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
05.01.2014, 21:33 2
Keys.RButton не относится к клавишам клавиатуры, потому событие и не происходит.
0
644 / 472 / 38
Регистрация: 04.11.2013
Сообщений: 1,943
05.01.2014, 21:44  [ТС] 3
NickoTin, Не могли бы вы пояснить: функция RegisterHotKey вообще не будет работать с мышью, или можно заменить WM_Hotkey на другое значение - и сработает? Или заменить keys.rbutton на что-нибудь типа control.mousebuttons.left (конкретно эту ситуацию пробовал - ноль реакции).
0
Почетный модератор
Эксперт .NET
8691 / 3643 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
05.01.2014, 21:48 4
Цитата Сообщение от Proidoha Посмотреть сообщение
вообще не будет работать с мышью
Угу.
0
Заблокирован
05.01.2014, 21:54 5
Proidoha, видимо придется вам каким-то иным образом связывать разные функции WinAPI.
пример с хуком мыши на форуме уже был.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.01.2014, 21:54

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Как присваивать горячие клавиши к примеру на выполнение нажатие клавиши
Народ. не могу найти, как в студии присваивать горячие клавиши к примеру на выполнение нажатие...

Горячие клавиши - обойти наведение фокуса и привязать клавиши клавиатуры к кнопкам на форме
всем доброго времени суток. столкнулся с такой проблемой. требуется чтобы при нажатии определенных...

8.5.3: Путаются Горячие Alt-кнопки
На форме есть акции, некоторые прижаты влево, некоторые - вправо. Также на форме имеется подформа...

Горячие клавиши.
Как отменить действие клавиши, которая открывает меню пуск, как отменить альт+таб (ну или если...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.