Использование GetKeyNameText

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Использование GetKeyNameText

Сообщение ALX_2002 » 10.03.2005 (Чт) 11:48

Народ, очень нужна хелпа с функцией GetKeyNameText

У кого есть примерчик или описание работы функции - киньте плиз.

Очень нужно. :roll:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 10.03.2005 (Чт) 11:58

Код: Выделить всё
Option Explicit

Private Declare Function GetKeyNameText Lib "user32.dll" Alias "GetKeyNameTextA" (ByVal lParam As Long, ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Declare Function MapVirtualKey Lib "user32.dll" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
  Dim s As String
 
  s = String$(50, 0)
  Me.Print Left$(s, GetKeyNameText(MapVirtualKey(KeyCode, 0) * &H10000, s, Len(s)))
End Sub

Private Sub Form_Load()
  Me.AutoRedraw = True
End Sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Шурик
Самогонщик
Самогонщик
Аватара пользователя
 
Сообщения: 1657
Зарегистрирован: 30.06.2003 (Пн) 13:27
Откуда: из запоя :))))) Матных сообщений: 972

Сообщение Шурик » 10.03.2005 (Чт) 12:03

Описание:
Функция GetKeyNameText извлекает строку, которая представляет название клавиши
А вобще Яндекс рулит :D
http://yandex.ru/yandsearch?stype=www&n ... eyNameText

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 13.03.2005 (Вс) 11:12

Этот пример то я сразу нашёл. Но там трабл в том, что русские символы он не возвращает при русской раскладке клавы.

Проблему решил иначе. Так что всё равно огромное спасибо :)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.03.2005 (Вс) 11:55

Мой пример возвращает русские символы при русской раскладке - но всё равно спасибо :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 13.03.2005 (Вс) 11:59

2 Gserg: Шеф. При уверенности в абсолютной вашей правоте ( мож я чего то не сообразил ) :oops: у меня раскладка меняется, но лезут только английские буквы :(

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.03.2005 (Вс) 12:07

Может дело в том, что у меня Win98? :)

А если так?
Код: Выделить всё
Option Explicit

Private Declare Function GetKeyNameText Lib "user32.dll" Alias "GetKeyNameTextW" (ByVal lParam As Long, ByVal lpBuffer As Long, ByVal nSize As Long) As Long
Private Declare Function MapVirtualKey Lib "user32.dll" Alias "MapVirtualKeyW" (ByVal wCode As Long, ByVal wMapType As Long) As Long

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
  Dim s As String
 
  s = String$(50, 0)
  Me.Print Left$(s, GetKeyNameText(MapVirtualKey(KeyCode, 0) * &H10000, StrPtr(s), Len(s)))
End Sub

Private Sub Form_Load()
  Me.AutoRedraw = True
End Sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 13.03.2005 (Вс) 12:11

Неа... У меня в любом случае возвращается только английские символы.

Русские получается поймать только через Key_Press ascii.

Ну в принципе я уже всё сделал, так что пасиба :)


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: Yandex-бот и гости: 138

    TopList