![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Здравствуйте!
Скажите, возможно ли используя SendMessage/PostMessage - послать приложению не одну кнопку а сразу несколько, разом? Вот так вот не устраивает: Код:
SendMessage(h2,WM_KEYDOWN,Ord('S'),0); SendMessage(h2,WM_KEYUP,Ord('S'),0); SendMessage(h2,WM_KEYDOWN,Ord('T'),0); SendMessage(h2,WM_KEYUP,Ord('T'),0); SendMessage(h2,WM_KEYDOWN,Ord('O'),0); SendMessage(h2,WM_KEYUP,Ord('O'),0); SendMessage(h2,WM_KEYDOWN,Ord('P'),0); SendMessage(h2,WM_KEYUP,Ord('P'),0); Можно сразу как то допустим?: Код:
SendMessage(h2,WM_KEYDOWN,Ord('STOP'),0); SendMessage(h2,WM_KEYUP,Ord('STOP'),0); Спасибо заранее за ответ. |
#2
|
||||
|
||||
![]() а смысл в этом? оконная процедура все-равно последовательно нажатия клавиш обработает.
Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
Alloc (21.10.2015)
|
#3
|
||||
|
||||
![]() Цитата:
Дело в том, что есть цикл, при выполнение которого в переменную записываются буквы которые уже потом должны быть нажаты быстро и по порядку (до 12 букв). просто слишком громостский код получится. Кстати у меня был еще вопрос по поводу PostMessage. По какой то неизвестной мне причине через PostMessage не передается ничего, а вот SendMessage работает. Приложение стороннее, точнее это 3d приложение, игра. Может быть Вы знаете почему? |
#4
|
||||
|
||||
![]() >>просто слишком громостский код получится.
А что громоздкого в цикле из двух строчек? Тем более, я так понимаю, это всё еще разные боты. Где ты видел пользователя, который одновременно (вот вообще одновременно, даже без миллисекундных задержек) нажимает кнопки? jmp $ ; Happy End! The Cake Is A Lie. |
Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
Alloc (22.10.2015)
|
#5
|
|||
|
|||
![]() Цитата:
Потому что PostMessage просто вбрасывает сообщения в очередь и тут же возвращается, а SendMessage ждет, когда посланное сообщение будет обработано. Цитата:
Ну напиши себе такую функцию и используй ее: Код:
procedure SendKeys(AHandle : THandle; AKeys : String); var I : Integer; begin for I := 1 To Length(AKeys) Do begin SendMessage(h2,WM_KEYDOWN,Ord(AKeys[i]),0); SendMessage(h2,WM_KEYUP,Ord(AKeys[i]),0); end; end; Usage: Код:
SendKeys(h2,'STOP'); PS. Если надо посылать не буквенно-цифровые клавиши, то придется попотеть, но тоже решаемо. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Alloc (22.10.2015)
|
#6
|
||||
|
||||
![]() Вот ещё и однострочный вариант
Код:
... for i := 1 to Length(AKeys) do SendMessage(h2, WM_CHAR, Word(AKeys[i]), 0); ... Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Alloc (22.10.2015)
|
#7
|
||||
|
||||
![]() Большое спасибо всем, это то что нужно)
|