Как различить, левый или правый шифт нажат?

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

Как различить, левый или правый шифт нажат?

Сообщение arthur2 » 07.12.2008 (Вс) 17:41

Нужно, чтобы это работало и в win98
Артур
 
   

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Re: Как различить, левый или правый шифт нажат?

Сообщение EUGY » 07.12.2008 (Вс) 18:45

Код: Выделить всё
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
    Dim B(256) As Byte
    GetKeyboardState B(0)
    If (B(VK_LSHIFT) And &H80) Then Debug.Print "VK_LSHIFT"
    If (B(VK_RSHIFT) And &H80) Then Debug.Print "VK_RSHIFT"
End Sub

А что такого особенного в win98?

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Как различить, левый или правый шифт нажат?

Сообщение arthur2 » 07.12.2008 (Вс) 19:14

В каком-то из руководств читал, что как раз VK_LSHIFT и VK_RSHIFT различает только NT...

Спасибо! Завтра проверю в вин98, надеюсь, сработает :D

Позже:

Увы и ах :cry: Это действительно не работает в вин98

Может, есть ещё какие-то варианты?
Артур
 
   

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Re: Как различить, левый или правый шифт нажат?

Сообщение awl100Alex » 09.12.2008 (Вт) 2:28

Удалил...
Последний раз редактировалось awl100Alex 17.12.2008 (Ср) 15:57, всего редактировалось 1 раз.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Как различить, левый или правый шифт нажат?

Сообщение arthur2 » 09.12.2008 (Вт) 9:54

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

Хочу попробовать сравнить побайтно, чем отличаются результаты GetKeyboardState при левом и правом шифте... Но дело осложняется тем, что у меня под рукой просто нет вин98 :(
Артур
 
   

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Re: Как различить, левый или правый шифт нажат?

Сообщение awl100Alex » 09.12.2008 (Вт) 12:17

Удалил...
Последний раз редактировалось awl100Alex 17.12.2008 (Ср) 15:58, всего редактировалось 1 раз.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Как различить, левый или правый шифт нажат?

Сообщение arthur2 » 09.12.2008 (Вт) 18:44

Я знаю программы, которые под 98-ой эту разницу видят, так что как-то всё-таки можно, но вот как? :D
Артур
 
   

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Re: Как различить, левый или правый шифт нажат?

Сообщение awl100Alex » 10.12.2008 (Ср) 10:52

Удалил...
Последний раз редактировалось awl100Alex 17.12.2008 (Ср) 15:59, всего редактировалось 1 раз.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Как различить, левый или правый шифт нажат?

Сообщение arthur2 » 10.12.2008 (Ср) 22:17

awl100Alex Спасибо! Попробую порыть в этом направлении - но пока не очень представляю, как :(

Очень бы хотелось, чтобы кто-нибудь из гуру заинтересовался и помог :)
Артур
 
   

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Как различить, левый или правый шифт нажат?

Сообщение tyomitch » 10.12.2008 (Ср) 22:20

Прерывания BIOS и абсолютные адреса памяти в 32-битных программах недоступны. Можете даже не пытаться.
Изображение

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Как различить, левый или правый шифт нажат?

Сообщение arthur2 » 10.12.2008 (Ср) 22:31

tyomitch А что делать? Помоги советом? Ведь как-то же можно узнать, левый или правый шифт?
Артур
 
   

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Re: Как различить, левый или правый шифт нажат?

Сообщение awl100Alex » 10.12.2008 (Ср) 22:45

Удалил...
Последний раз редактировалось awl100Alex 17.12.2008 (Ср) 16:00, всего редактировалось 1 раз.

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Re: Как различить, левый или правый шифт нажат?

Сообщение awl100Alex » 11.12.2008 (Чт) 2:00

Удалил...
Последний раз редактировалось awl100Alex 17.12.2008 (Ср) 16:01, всего редактировалось 1 раз.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Как различить, левый или правый шифт нажат?

Сообщение ANDLL » 11.12.2008 (Чт) 14:36

awl100Alex писал(а):Значит, выход только один: писать драйвер - но это не так просто! Драйверам доступно все и вся в любой системе. В том числе и прямые обращения к периферийным устройствам. Тут уж точно нужна помощь Гуру.
Это бред :roll:
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Как различить, левый или правый шифт нажат?

Сообщение arthur2 » 11.12.2008 (Чт) 14:49

awl100Alex Было бы здорово! Жду с нетерпением

ANDLL Бред или не бред, но в любом случае - способ для меня не подъёмный и совершенно не понятный.

А ты бы посоветовал чего менее бредового?
Артур
 
   

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Как различить, левый или правый шифт нажат?

Сообщение ANDLL » 11.12.2008 (Чт) 15:20

arthur2 писал(а):ANDLL Бред или не бред, но в любом случае - способ для меня не подъёмный и совершенно не понятный.

Дык это не способ. Это бессмыслица
По факту - я бы реккомендовал не использовать windows98. По возможности например заменить его на кнопикс с вайном.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Как различить, левый или правый шифт нажат?

Сообщение arthur2 » 11.12.2008 (Чт) 17:34

я бы реккомендовал не использовать windows98


Не, ну это же не решение :)
Как обойти проблему - я и сам могу придумать. Например, сделать, чтобы то, что мне нужно с различными шифтами, просто не работало в вин98, а работало только в ХР (собственно, пока так и есть)
Артур
 
   

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Re: Как различить, левый или правый шифт нажат?

Сообщение awl100Alex » 12.12.2008 (Пт) 2:25

ANDLL писал(а):
awl100Alex писал(а):Значит, выход только один: писать драйвер - но это не так просто! Драйверам доступно все и вся в любой системе. В том числе и прямые обращения к периферийным устройствам. Тут уж точно нужна помощь Гуру.
Это бред :roll:

Ты НЕ прав! Все правильно я написал! Драйвера имеют полный(!) и бесконтрольный(!) доступ ко всей периферии ПК - это факты! И если дрова глючат, то любую систему сносит капитально и ничего она поделать с этим не может, кроме как отключением после полной перезагрузки глючного драйвера вообще.
Даже антивирусники не могут их контролировать!

arthur2
Проблему удалось решить используя как раз именно ДРАЙВЕР!

Удалил...
Последний раз редактировалось awl100Alex 17.12.2008 (Ср) 16:06, всего редактировалось 2 раз(а).

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Как различить, левый или правый шифт нажат?

Сообщение arthur2 » 12.12.2008 (Пт) 4:34

awl100Alex
Огромное тебе спасибо! Иду разбираться :)

позже:
Увы и ах :(
На моей машине код не работает
Добавил Else:
Код: Выделить всё
Dim i As Long
i = ReadPort(&H60)
Select Case i And 255
  Case Is = 42 'Если скан-код 42, то это ЛЕВАЯ Shift...
   Label1.Caption = "Нажата ЛЕВАЯ Shift"
  Case Is = 54 'Если скан-код 54 - ПРАВАЯ Shift...
   Label1.Caption = "Нажата ПРАВАЯ Shift"
  Case Else
    Label1.Caption = Hex(i)
End Select

И выяснилось: на мою клавиатуру код вообще не реагирует. А вот при движении мыши циферки заизменялись.

Получается, что на разных машинах этот самый порт 60h может быть привязан к разным устройствам? так что ли? Всё-таки, способ получился с малопредсказуемыми результатами :)
Артур
 
   

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Как различить, левый или правый шифт нажат?

Сообщение ANDLL » 12.12.2008 (Пт) 8:23

То что ты скачал уже готовые дрова это круто(хоть и работать будет через раз).
Но все остальные высокие материи - бред.
Другое дело, что написать драйвер с нуля не так просто: нужно скачивать DDK (DriverDevelopmentKit) с сайта Microsoft, разбираться в этом дремучем лесу ассемблера, уйти в небытие и сгинуть в дебрях байтов, битов, EAX... EBX... ECX... EDX... RAX... RBX... RCX... RDX... RBP... RSI... RDI... RSP... – после этого застрелиться!
Ну для справки - драйвера увы и ах, пишут не на ассемблере.
Всё-таки, способ получился с малопредсказуемыми результатами
Это только одна проблема. Даже на компе с клавиатурой на правильном порту работать будет не постоянно.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Re: Как различить, левый или правый шифт нажат?

Сообщение awl100Alex » 13.12.2008 (Сб) 1:56

Удалил...
Последний раз редактировалось awl100Alex 17.12.2008 (Ср) 16:07, всего редактировалось 1 раз.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Как различить, левый или правый шифт нажат?

Сообщение arthur2 » 13.12.2008 (Сб) 8:22

Попробуй так...

Увы... Но я же попробовал case else (и на ingeger переобъявил) - значение вообще не меняется :(
Артур
 
   

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Re: Как различить, левый или правый шифт нажат?

Сообщение awl100Alex » 13.12.2008 (Сб) 12:51

Хорошо... В понедельник проверю на разных машинах с разными клавами.

P.S.
arthur2
Зайди на своем компе в "Диспетчер устройств" и посмотри в свойствах своей клавиатуры вкладку "Ресурсы"...
Напиши, что у тебя написано в диапазонах ввода/вывода, а именно "Параметр" - там как раз и будут указаны текущие порты твоей клавы.

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Re: Как различить, левый или правый шифт нажат?

Сообщение awl100Alex » 15.12.2008 (Пн) 22:12

arthur2
Вот результаты проверки...
1) WinXP SP2, стандартная клава 101/102 (Microsoft Natural), PS/2; мышка PS/2
2) Win2000 SP4, стандартная клава 101/102 (Microsoft Natural), PS/2; мышка PS/2
3) Win2000 SP4, клава SVEN 101/102, PS/2; мышка PS/2
4) Win98 SE, стандартная клава 101/102 (Microsoft Natural), AT; мышка COM1
5) WinXP SP2,стандартная клава 101/102 (Microsoft Natural), PS/2; мышка PS/2
6) WinXP SP2,стандартная клава 101/102 (4U Black), PS/2; мышка PS/2
7) Win98 SE, клава SVEN 101/102, PS/2; мышка PS/2
8] WinXP (FuckYouBill), клава A4 Tech Multimedia 101/102, PS/2; мышка USB
9) WinXP SP2, стандартная клава 101/102 (Microsoft Natural), PS/2; мышка USB


Удалось даже найти один древний комп (№ 4), еще с AT-интерфейсом клавы! На ВСЕХ(!)
волонтерных машинах результат был один и тот же: НИКАКИХ ПРОБЛЕМ!!! Все срабатывало четко и стабильно!
Так что, arthur2 одно из трех:
либо ты чего-то перепутал... либо ищи траблы конкретно у себя в компе!

Удалил...
Последний раз редактировалось awl100Alex 17.12.2008 (Ср) 16:10, всего редактировалось 2 раз(а).

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Как различить, левый или правый шифт нажат?

Сообщение tyomitch » 15.12.2008 (Пн) 22:40

awl100Alex, чтоб тебе всю жизнь пользоваться такими прогами, как твоя :twisted:

thedailywtf отдыхает
Изображение

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Как различить, левый или правый шифт нажат?

Сообщение arthur2 » 15.12.2008 (Пн) 23:41

awl100Alex
Нет, способ слишком мутным получился...
Чтобы это исправить, давай подумаем: пользователь обычно работая за компом, использует либо мышку, либо печатает на клаве, а так чтобы одновременно... бывает редко. Согласен?!
Не согласен :D Очень и очень часто пользуюсь мышью, удерживая то контрл, то шифт

В общем, в свойствах клавы вкладки "ресурсы" я не нашёл. Но нашёл "вид >> ресурсы по типу" Там клавиатуры тоже нет, но мышь есть - их две, на 00000060 и 00000064 портах. Боюсь, что клава тоже может оказаться на непредсказуемом порте. А с учётом малой предсказуемости результатов, использовать этот способ всё же не стоит...

Можно, оказывается различить клавиши через DirectX ! Но и этим способом я пользоваться пожалуй не буду - игра не стоить свеч, а овчинка выделки. Просто придётся смириться, что в вин98 моя прога эти клавиши различать не будет :(
Артур
 
   

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Re: Как различить, левый или правый шифт нажат?

Сообщение awl100Alex » 17.12.2008 (Ср) 16:12

Странные вы ребъята. Не перестаю вам удивляться.................. :(

arthur2 писал(а):
В общем, в свойствах клавы вкладки "ресурсы" я не нашёл. Но нашёл "вид >> ресурсы по типу" Там клавиатуры тоже нет, но мышь есть - их две, на 00000060 и 00000064 портах.


У тебя ДВЕ(!) мышки в системе???!!! Да еще и на одинаковых портах???!!! И ты еще говоришь, что способ мутный!.. Аффигеть!!! А клавиатура вообще в твоей системе числиться, и так... чисто виртуально??? :roll:
И ты что действительно считаешь, что DirectX при таком раскладе тебе поможет???

tyomitch писал(а):awl100Alex, чтоб тебе всю жизнь пользоваться такими прогами, как твоя :twisted:

tyomitch
Использую... и вполне успешно! :)

P.S.
Заметь!..
НИОДИН(!) из так называемых «Гуру», кроме «мудрой» болтовни НИЧЕГО(!) конкретного НЕ предложил! :(

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Как различить, левый или правый шифт нажат?

Сообщение ANDLL » 17.12.2008 (Ср) 16:21

Полезнее не говорить глупости, чем говорить их
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

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

Re: Как различить, левый или правый шифт нажат?

Сообщение iGrok » 17.12.2008 (Ср) 16:37

awl100Alex писал(а):У тебя ДВЕ(!) мышки в системе???!!! Да еще и на одинаковых портах???!!! И ты еще говоришь, что способ мутный!.. Аффигеть!!! А клавиатура вообще в твоей системе числиться, и так... чисто виртуально??? :roll:

У меня, к примеру ОДНА клава, у которой в ресурсах порты 60 и 64. А для мыши порт вообще не указан ни для usb(что логично), ни для ps/2(touchpad)
Тебе скрин показать, вместе с фоткой ноута?
label:
cli
jmp label

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Как различить, левый или правый шифт нажат?

Сообщение ANDLL » 17.12.2008 (Ср) 16:44

Кстати, DirectInput поможет скорее всего. И там не очень сложно вобщемто...
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

След.

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

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

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

    TopList  
cron