winproc + обработка клавиатуры

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

cpl
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 21.05.2008 (Ср) 18:39

winproc + обработка клавиатуры

Сообщение cpl » 06.03.2009 (Пт) 21:06

Есть необходимость получать кода нажатых+отжатых клавиш всей клавиатуры в своем приложении
Использую vb2005, создал пустую форму, описал winproc
Код: Выделить всё
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    End Sub

    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        Dim s As String
        s = "0x" + String.Format("{0:X4}", m.Msg)
        Select Case s
            Case "0x0100"
                MsgBox("KEY down " + Hex(m.WParam.ToInt32))
            Case "0x0101"
                MsgBox("KEY up " + Hex(m.WParam.ToInt32))
        End Select
        MyBase.WndProc(m)
    End Sub
End Class


в результате при нажатие на клавиши выскакивает сообщение "KEY down"
сообщение "KEY up" не появляется ?
при размещении на форме дополнительных компонент типа TextBox, PictureBox
winproc не получает управления ?
Как это можно побороть ?

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: winproc + обработка клавиатуры

Сообщение MIT » 06.03.2009 (Пт) 21:36

cpl писал(а):при размещении на форме дополнительных компонент типа TextBox, PictureBoxwinproc не получает управления ?
KeyPreview формы?
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

cpl
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 21.05.2008 (Ср) 18:39

Re: winproc + обработка клавиатуры

Сообщение cpl » 10.03.2009 (Вт) 14:12

MIT писал(а):KeyPreview формы?


KeyPreview не вызывается если на форму поставлен TextBox,

Необходимо обрабатывать факт нажатия и отжатия кнопки с получением кода кнопки, с последующей обработкой (например пользователь нажал кнопку меню, windows не должен показывать меню пуск и тд).
Нужен именно код кнопки а не символ который будет менять в зависимоти от текущей раскладки клавиатуры.
WinProc подходит тем что производиться перехват фактов нажатия и отжатия с сооветствующими кодами, но работает как то нетак...

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: winproc + обработка клавиатуры

Сообщение iGrok » 10.03.2009 (Вт) 14:22

cpl писал(а):KeyPreview не вызывается если на форму поставлен TextBox..

Что значит "не вызывается"? KeyPreview и не может вызываться - это свойство формы, а не событие.
Ставишь его в True, и всё.
label:
cli
jmp label

cpl
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 21.05.2008 (Ср) 18:39

Re: winproc + обработка клавиатуры

Сообщение cpl » 12.03.2009 (Чт) 16:42

понял, получилось ! (посчитал что речь идет о событиии PreviewKeyDown) :eye:


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 69

    TopList  
cron