Обработка нажатий на клавиатуру

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

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

EXIS
Обычный пользователь
Обычный пользователь
 
Сообщения: 71
Зарегистрирован: 02.05.2006 (Вт) 17:16

Обработка нажатий на клавиатуру

Сообщение EXIS » 12.10.2008 (Вс) 11:42

Как узнать раскладку на платформе .net

Или придется обходиться дедовским
Код: Выделить всё
Private Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
GetKeyboardLayoutName(Label1.Text)

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

Re: Обработка нажатий на клавиатуру

Сообщение MIT » 12.10.2008 (Вс) 13:41

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

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

Re: Обработка нажатий на клавиатуру

Сообщение iGrok » 12.10.2008 (Вс) 15:13

MIT писал(а):А чем тебе не нравиться WinAPI? Ведь работает же.

Токо Long на Integer поменяй..
label:
cli
jmp label

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Обработка нажатий на клавиатуру

Сообщение Williams » 12.10.2008 (Вс) 16:26

Можно то же самое, но через P/Invoke:

Код: Выделить всё
<DllImport("user32.dll")> _
Private Shared Function GetKeyboardLayoutName(<Out> pwszKLID As StringBuilder) As Boolean
End Function
И вы думаете, что вас оставят в живых после прочтения этого поста?

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Обработка нажатий на клавиатуру

Сообщение Nord777 » 12.10.2008 (Вс) 17:48

И нафиг изголяться? Народ еще не привык, что в .Net уже многое есть?

можно так
Код: Выделить всё
MsgBox(InputLanguage.CurrentInputLanguage.LayoutName)
Можно эдак
Код: Выделить всё
  Private Sub Form1_InputLanguageChanged(ByVal sender As Object, ByVal e As InputLanguageChangedEventArgs) Handles Me.InputLanguageChanged
    Dim messageBoxVB As New System.Text.StringBuilder()
    messageBoxVB.AppendFormat("{0} = {1}", "InputLanguage", e.InputLanguage)
    messageBoxVB.AppendLine()
    messageBoxVB.AppendFormat("{0} = {1}", "Culture", e.Culture)
    messageBoxVB.AppendLine()
    messageBoxVB.AppendFormat("{0} = {1}", "CharSet", e.CharSet)
    messageBoxVB.AppendLine()
    MessageBox.Show(messageBoxVB.ToString(), "InputLanguageChanged Event")
  End Sub
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

EXIS
Обычный пользователь
Обычный пользователь
 
Сообщения: 71
Зарегистрирован: 02.05.2006 (Вт) 17:16

Re: Обработка нажатий на клавиатуру

Сообщение EXIS » 12.10.2008 (Вс) 20:10

Nord777 писал(а):И нафиг изголяться? Народ еще не привык, что в .Net уже многое есть?

можно так
Код: Выделить всё
MsgBox(InputLanguage.CurrentInputLanguage.LayoutName)
Можно эдак


Спасибо! WinAPI немного не удобен и потихоньку устаревает, тем более хочеться изучить все возможности платформы .Net :D

Я вот пишу обработчик нажатия клавиш для ячейки... пишу как умею. Может в .net есть какая-то функция которая переводит коды клавиш учитывая текущую раскладку клавиатуры? :roll:

Код: Выделить всё
    Protected Overrides Sub OnKeyDown(ByVal e As System.Windows.Forms.KeyEventArgs, ByVal rowIndex As Integer)
        Dim symb As Char
        If InputLanguage.CurrentInputLanguage.Culture.LCID = 1033 Then symb = Chr(e.KeyCode)
        If InputLanguage.CurrentInputLanguage.Culture.LCID = 1049 Then
            If e.KeyCode = 65 Then symb = "Ф"
            If e.KeyCode = 66 Then symb = "И"
            If e.KeyCode = 67 Then symb = "С"
            If e.KeyCode = 68 Then symb = "В"
            If e.KeyCode = 69 Then symb = "У"
            If e.KeyCode = 70 Then symb = "А"
            If e.KeyCode = 71 Then symb = "П"
        End If
        MyBase.DataGridView.CurrentCell.Value += symb
    End Sub

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Обработка нажатий на клавиатуру

Сообщение Nord777 » 12.10.2008 (Вс) 21:17

Может в .net есть какая-то функция которая переводит коды клавиш учитывая текущую раскладку клавиатуры?
Есть. Событие KeyPress.
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5


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

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

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

    TopList