Есть небольшая но прикольная игрушка,называеться она Platypus... Так вот в ней чтобы быстро стрелять надо быстро жать клавишу... Задача програмно сэмулировать НАЖТИЕ и !!ПОДНЯТИЕ!! клавишы... Прилагаю свой код(за клавишу фаер взял пробел)... Есть ещё небольшая загвоздка если нажимать клавиши через ASCll-игра эти нажатия вообще не видит, поэтому пытался через скан-код(пробел-039h-опустить/039h+80h-поднять) вышло так что кнопка опускаеться и залипает, тоесть скан-код опускания у меня заработал а вот поднимания почемуто нет....может я не правильно приплюсовал??(039h+080h=0b9h) Вобщем задача такова с какими параметрами написать keybd_event чтобы сэмулировать аппаратное !!!ПОДНЯТИЕ!!! клавиши,допустим пробел.... Возможно есть какето другие АПИ или способы это зделать прошу выкладивать...Заранее спасибо!
Я просто поражаюсь...неужели форум не посещяют хорошие программисты...три топика создал...ответов нет!!! UP умные люди,отзовитесь! Может я плохо вопросы задаю???
devillsd Ну что Вы кричите-то? Умные люди на такие вопросы могут и не отвечать в связи с тем, что на форуме уже не раз обсуждалось. Зато такие чайники, как я, могут и в очередной раз повторить. В общем попробуйте небольшую задержку перед поднятием клавиши поставить: invoke Sleep,100, например. Кстати, в указании скан-кода нет необходимости.
И со слипом не работает...а смысл в скан-коде.....Если я вызываю кей ивент без скан кода игра невидет ни нажатия ни отпускания, если же вызываю кей-ивент со скан кодом видет тлько нажатие....продолжаем тему...
4-тый раз отвечаю на свой вопрос....Ошыбка моя была в том что я перепутал клавы Клава XT посылает скан-код поднятой клавишы так скан-код+080h, а клава AT посылает в старшем байте "FO" + скан код..... Реализовал поднятие так.... .data fo db "FO",0 .............. mov ah,fo mov al,039h invoke keybd_event,32,eax,KEYEVENTF_KEYUP,NULL А теперь подскажите какими ещё способами(покороче) возможно заести в старшый бит буквенную информацыю а в нижний цифренную....
devillsd Кстати - вопрос имеет однин побочный момент - поднятие клавиши на аппаратном уровне нереализуемо. Нажатие да вполне можно реализовать (повторить последний скан код), а вот скан кода поднятия после этого нет. Уровень работы с контроллером клавиатуры напрямую, через порты.
devillsd Ты форум с чатом перепутал. Иногда и неделю приходится ждать ответа. Именно поэтому такие простые вопросы нет смысла задавать - они уже разжеваны 100 раз и ответы ищутся через поисковики. Ну правда новичкам тяжело определить степень трудности... Но увидев при поиске слово FAQ - верный признак, что хорошие программисты на этот вопрос уже ответили. Поэтому увидев 10000 ответов, я всегда добавляю слово FAQ.