Проблема с GetAsyncKeyState

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Ariman
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 817
Зарегистрирован: 02.09.2003 (Вт) 16:23
Откуда: Великая наша держава, г.Москва

Проблема с GetAsyncKeyState

Сообщение Ariman » 03.06.2004 (Чт) 20:28

У меня проблемка такая возникла:
в программе с помощью GetAsyncKeyState я получаю, какие клавиши нажаты. Все бы ничего, но проблема в том, что при одновременном нажатии четырех(или больше) кнопок одновременно, прога притормаживает, почти виснет, и, иногда, спикер пищит.
Я думаю, тут проблема не в моей проге, а в каком- то виндовском ограничении, т.к. по-моему, в большинстве других программ тоже клава не выдерживает.
Буду очень благодарен, если мне подскажут, как это решить.

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

Сообщение GSerg » 04.06.2004 (Пт) 9:37

Никак ты это не решишь. Это аппаратное ограничение клавы.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Re: Проблема с GetAsyncKeyState

Сообщение codemaster » 04.06.2004 (Пт) 10:58

[quote="Ariman"]Все бы ничего, но проблема в том, что при одновременном нажатии четырех(или больше) кнопок одновременно, прога притормаживает, почти виснет, и, иногда, спикер пищит.
[quote]

Можно узнать зачем надо нажимать одновременно
четыре(или больше) кнопок ?

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 04.06.2004 (Пт) 12:30

Ну, иногда встречаются хоткеи, состоящие из 4 клавиш. Например, для перевода текста в нижний индекс (subscript) в Ворде 2000 нужно нажать Ctrl+Alt+Shift+X. Странно, что Х, а не какой-нить Num6.
А вообще, это действительно железное ограничение клавиатурного порта.

Ariman
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 817
Зарегистрирован: 02.09.2003 (Вт) 16:23
Откуда: Великая наша держава, г.Москва

Сообщение Ariman » 04.06.2004 (Пт) 14:46

К сожалению я так и думал....
Очень жаль.
А нужно мне это для моей игры GoblinWars. В прочем, это мне не слишком то и нужно, игра полностью закончена и на 100% играбельна.
У меня ее даже в классе купили...
Никогда бы не подумал, что буду сам с интересом играть в свою же игру. А теперь, когда к другу прихожу только в это и играем

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 04.06.2004 (Пт) 18:31

Ты имеешь в виду, что два человека играют на одной клаве и блочат друг друга? Да, это действительно проблема. Большинство игр, использующих такой режим, юзают обычно по 2 кнопки на человека, плюс изредка еще 1-2. Как пример - Chicken Invaders.

Здесь уже надо в локалку переходить, там ограничения тоже есть, но уже другие... :)

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 04.06.2004 (Пт) 20:11

Может быть DirectInput поможет, хотя я не уверен - ведь это ограничение клавиатурного порта :(
Моду создают модоки, а распространяют модозвоны.

Ariman
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 817
Зарегистрирован: 02.09.2003 (Вт) 16:23
Откуда: Великая наша держава, г.Москва

Сообщение Ariman » 04.06.2004 (Пт) 21:26

Ennor, знаешь, в проблему это пока не переростало, в основном почти всегда зажата одна из клавиш ходьбы, плюс выстрел каким-либо оружием. В итоге всего 4 кнопки, и все работает ОК.
Но просто пару раз люди в припадке ярости судорожно нажимали 3 или более кнопок, и в такой момент комп тормозил.

А по поводу локалки... Я как то уже говорил. Проблемы две.
1) Время. Сейчас уже лето, а я даже уединиться с компом не могу - в ФМШ при Бауманке экзамен за экзаменом....... Не прекращаясь.
2)Не менее серьезная проблема. GoblinWars - полноценная игра, в разрешении 800х600 - весь экран. Тестирование сетевой версии становится раза в четыре-пять сложнее, чем собственно написание.
А так как локалки у меня нет, да и к тому же не будешь же все время просить протестировать с тобой новую версию(а если нужно в обеих прогах на время притормозить(т.е. pause), посмотреть значения переменных....................)
В общем куда не кинь, все клин.


А насчет DI я не уверен. Я ж говорю, даже если просто в виндах зажать штук шесть клавиш, комп, скорее всего, взбунтуется.

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

Сообщение GSerg » 05.06.2004 (Сб) 5:30

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

Ariman
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 817
Зарегистрирован: 02.09.2003 (Вт) 16:23
Откуда: Великая наша держава, г.Москва

Сообщение Ariman » 05.06.2004 (Сб) 21:42

Похоже, это проклятие, которым покарали свыше первых программистов-грешников...

......И будет ваш спикер пищать, как умирающий зверь,
А компьютер тормозить, коли попробует кто из вас
Одновременно пять кнопок зажать!.........

Надо эту тему переименовать в "Проклятие программистов"


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

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

Сейчас этот форум просматривают: SemrushBot и гости: 8

    TopList