Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> AutoFire, как сделать ? 
:(
    Опции темы
p0s0l
Дата 27.7.2003, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



В одной гаме надо часто нажимать пробел (раза 3-4 в секунду), меня это задолбало.
Поэтому я хотел написать прогу, имитурующую нажатие пробела.
Вот процедура таймера:

hnd := GetForegroundWindow;
PostMessage (hnd, WM_KEYDOWN, 32, $390001);
PostMessage (hnd, WM_KEYUP, 32, $C0390001);

И ничего не делается. WM_CHAR генерится автоматически.

В чем дело ? Еще чето надо делать ?



--------------------
С уважением, г-н Посол.
PM   Вверх
stab
Дата 27.7.2003, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



игра наверно ипользует GetAsyncKeyState или GetKeyboardState или что-то подобное, попробуй SetKeyboardState или keybd_event, т.к. сообщения не устанавливают состояния клавиш...


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
p0s0l
Дата 27.7.2003, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Да вообще, даже не игра, вообще ничо на это не реагирует. Даже Дельфи, и сама прога тоже....
Сообщения приходят, я смотрел, но почему-то ничего не происходит.
Я вытащил на форму TEdit, туда поставил курсор - и нифига...



--------------------
С уважением, г-н Посол.
PM   Вверх
stab
Дата 27.7.2003, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



может sndkey32.pas тебе поможет..., на компакте с дельфями поищи в папке Extras кажется


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
<Spawn>
Дата 28.7.2003, 05:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Код

   ScanCode:=MapVirtualKey(Key,0);
   lParam := ScanCode shl 16 or 1;
   SendMessage(Wnd,WM_KEYDOWN,Key,lParam);



--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
p0s0l
Дата 28.7.2003, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



cully, спасибо за подсказку с sndkey32!

Я понял свою ошибку. sndkey32 работает через keybd_event, а не через сообщения. А keybd_event
посылает WM_KEYDOWN и WM_KEYUP текущему элементу активного окна, имеющему фокус (по-моему,
узнать хендл этого окна сложно).
А я посылал сообщения окну GetForegroundWindow - эта функция возвращает хэндл просто активного окна (формы),
а не его дочернего окна, имеющего фокус.

Сейчас всё работает с помощью sndkey32.pas, но только не в той гаме...



--------------------
С уважением, г-н Посол.
PM   Вверх
Гость_cully
Дата 28.7.2003, 13:38 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











в sndkey32 есть еще AppActivate. Перед тем как посылать нажатия надо сделать AppActivate('Заголовок нужного окна');
  Вверх
<Spawn>
Дата 28.7.2003, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Попробуй так (По крайней мере у меня сработало)
Код
PostMessage(Wnd,WM_KeyUp,VK_SPACE,0);



--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
p0s0l
Дата 28.7.2003, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Ну сейчас в обычных приложениях работает и с помощью SendKeys и с помощью PostMessage.
Только вот в гаме-то не работает, видимо как сказал cully там работают через GetAsyncKeyState.
Так наверное уже не обмануть гаму...



--------------------
С уважением, г-н Посол.
PM   Вверх
stab
Дата 29.7.2003, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



p0s0l может кинишь гаму, я пороюсь может что-нить нарою... или она здоровая больно?


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
p0s0l
Дата 29.7.2003, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



cully - я тебе закинул, правда не знаю, получишь ли ты - у меня тут чо-то с мылом...

Еще: в той гаме можно и мышью стрелять, тоже пробовал с помощью PostMessage вроде WM_LMOUSEBUTTON - только никакой реакции. Если с клавой облом может быть из-за юзанья GetAsyncKeyState, то из-за чего может быть облом с мышью ?



--------------------
С уважением, г-н Посол.
PM   Вверх
stab
Дата 29.7.2003, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



p0s0l, игра Direct Input использует, а он вроде почти на прямую общается с клавой и мышой, короче надо думать... smile.gif


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
stab
Дата 29.7.2003, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



з.ы. p0s0l, ты не в курсе зачем это игра сокеты юсает? троян там походу какой-то или она в инет куда-то лазит.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
p0s0l
Дата 29.7.2003, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



сокеты - свои результаты можно кидать в инет.
DirectInput - значит облом, хотя игра то примитивнейшая...
ладно уж, буду палец тренировать...

Спасиб за советы!


Это сообщение отредактировал(а) p0s0l - 29.7.2003, 17:22


--------------------
С уважением, г-н Посол.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0583 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.