purebasic.info

PureBasic forum
Текущее время: Пт янв 19, 2018 4:04 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
СообщениеДобавлено: Вс ноя 13, 2016 5:53 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 540
Благодарил (а): 53 раз.
Поблагодарили: 15 раз.
Пункты репутации: 5
Не пойму как сравнивать неизвестный символ из строки с кодами клавы.
Каким образом строка попадёт в редактор, не известно, скорей всего из буфера.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс ноя 13, 2016 6:00 pm 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 201
Благодарил (а): 8 раз.
Поблагодарили: 26 раз.
Пункты репутации: 0
Не?
Код:
1
2
3
4
5
text.s = "a"
Select Asc(text)
  Case 97
    Debug "a = " + Str(97)
EndSelect



Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн ноя 14, 2016 5:00 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 540
Благодарил (а): 53 раз.
Поблагодарили: 15 раз.
Пункты репутации: 5
НЕ! ты предлагаешь с конкретными символами сравнивать.
Мне нужно ассоциировать неизвестный символ именно с кодом клавиш, с этими константами, #PB_Key_A, и я понятия не имею что в переменной лежит.
Но напрямую некая буква не может с этими константами сравниваться, тут я и завис. Нужно перебирать константы и ловить совпадение с переменной, не совпало, берём следующий символ.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт ноя 15, 2016 6:33 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 540
Благодарил (а): 53 раз.
Поблагодарили: 15 раз.
Пункты репутации: 5
Вот почти нужное.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
Procedure SendKeys(Keys.s)
  Protected i.l, KeyCode.w, VirtualKey.b, KeysState.b
 
  For i = 1 To Len(Keys)
;    KeyCode = VkKeyScan_(Asc(Mid(Keys,i,1))); только англицкий
KeyCode = VkKeyScanEX_(Asc(Mid(Keys,i,1)), 0); тут можно русский текст
    VirtualKey = KeyCode & $FF
    KeysState = (KeyCode >> 8) & $FF; регистр символа
   
  Next
EndProcedure
 


это работает как надо, но только если символ попадает в пару к англицкой букве, иначе возвращает непонятное, не получилось у меня увязать что возвращается
А = Ф = 65
< = Б = отрицательное число, а хочется правильное число получить
и так далее

есть подозрение о наличии ещё одной функции такого плана, но у меня ни фантазии ни знаний на это не хватает


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт ноя 15, 2016 7:11 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6224
Благодарил (а): 16 раз.
Поблагодарили: 173 раз.
Пункты репутации: 48
А если так
Код:
1
KeyCode = VkKeyScanEX_(Asc(Mid(Keys,i,1)), GetKeyboardLayout_(0))


_________________
read-only


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт ноя 15, 2016 10:37 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 540
Благодарил (а): 53 раз.
Поблагодарили: 15 раз.
Пункты репутации: 5
Не, не хочет, пробовал.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB