![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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
|
||||
|
||||
|
>>просто слишком громостский код получится.
А что громоздкого в цикле из двух строчек? Тем более, я так понимаю, это всё еще разные боты. Где ты видел пользователя, который одновременно (вот вообще одновременно, даже без миллисекундных задержек) нажимает кнопки? |
| Этот пользователь сказал Спасибо 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
|
||||
|
||||
|
Большое спасибо всем, это то что нужно)
|