Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2012, 10:57   #1
Merano
Пользователь
 
Регистрация: 30.07.2012
Сообщений: 32
По умолчанию Программное нажатие клавиши

Здравствуйте.
Как можно программно "нажать" клавишу, и не "отпуская" ее не мешать повторному нажатию этой же клавиши?
То есть, я нажимаю кнопку с помощью SendMessage, с этим проблем нет, но Windows запоминает, что клавиша "не поднята", и повторное нажатие этой же клавиши ничего не дает, лишь через раз.

Нужно как-то нажать клавишу, и... может как-то удалить из памяти Windows, что кнопка не поднята, чтобы эту кнопку можно было снова использовать.

Вроде понятно объяснил
Заранее благодарен.
Merano вне форума Ответить с цитированием
Старый 14.12.2012, 11:40   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

SetKeyBoardState попробуйте
phomm вне форума Ответить с цитированием
Старый 14.12.2012, 11:44   #3
Merano
Пользователь
 
Регистрация: 30.07.2012
Сообщений: 32
По умолчанию

phomm, спасибо, попробую.
Merano вне форума Ответить с цитированием
Старый 14.12.2012, 11:59   #4
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

а в чем, собственно, смысл подобного действия?
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 14.12.2012, 12:34   #5
Merano
Пользователь
 
Регистрация: 30.07.2012
Сообщений: 32
По умолчанию

Yurk@, раз так интересно... Смысл в том, что программа посылает комбинации клавиш в игру, где потом предстоит выбрать место для постройки/места, куда должны двигаться юниты.
То есть, если передать WM_KEYDOWN, а затем WM_KEYUP, то действия выполняется под курсором автоматом, и не дает возможности выбрать место. Поэтому, я считаю, что нужно передать WM_KEYDOWN, и "убрать" нажатое состояние клавиш из Windows, чтобы потом можно было снова пользоваться клавишами.

phomm, не получается установить клавишу в "поднятом" положении... Пробую таким образом:

Код:
...
var
 State: TKeyboardState;
begin
 State[Key] := State[key] and (not 1);
 SetKeyboardState(State);
...
Merano вне форума Ответить с цитированием
Старый 14.12.2012, 13:09   #6
Merano
Пользователь
 
Регистрация: 30.07.2012
Сообщений: 32
По умолчанию

Больше никто не может помочь?
Merano вне форума Ответить с цитированием
Старый 14.12.2012, 14:14   #7
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

DirectInput API http://msdn.microsoft.com/ru-ru/libr...(v=vs.85).aspx

Однако, игра игре - рознь. Поэтому пока все разговоры безпредметны, увы.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 14.12.2012, 14:18   #8
Merano
Пользователь
 
Регистрация: 30.07.2012
Сообщений: 32
По умолчанию

raxp, спасибо, попробую DirectInput поковырять.
Merano вне форума Ответить с цитированием
Старый 14.12.2012, 15:21   #9
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...а смысл? Вы точно знаете, каким образом игра воспринимает нажатия, у игры название имеется?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 14.12.2012, 15:51   #10
Merano
Пользователь
 
Регистрация: 30.07.2012
Сообщений: 32
По умолчанию

Warcraft III: TFT.

По поводу DirectInput - тупик. Все, что удалось накопать, статью, и пример к ней. Но ни слова, каким образом имитировать нажатие клавиш через DirectInput.
Merano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программное нажатие 3-х клавиш artemavd Общие вопросы Delphi 12 19.09.2011 14:24
Программное нажатие кнопки в TWebBrowser RIO Работа с сетью в Delphi 3 16.07.2011 22:27
Программное нажатие клавиши в чужом приложении Der_G()RuNu(h Работа с сетью в Delphi 33 10.07.2011 18:57
Программное нажатие клавиш Damien4Damien Общие вопросы Delphi 2 17.10.2010 16:26
Долгое нажатие клавиши в KeyDown как одно нажатие marina15056 Общие вопросы Delphi 7 16.08.2009 00:22