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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2010, 23:16   #1
Ga-sergey
Пользователь
 
Регистрация: 09.03.2007
Сообщений: 34
По умолчанию Эмуляция нажатия клавиши в неактивном окне

Сейчас использую вот этот код, но он не стабилен
Код:
procedure EmulateKey(Wnd: HWND; VKey: Integer);
asm
   push 0
   push edx
   push 0101H //WM_KEYUP
   push eax
   push 0
   push edx
   push 0100H //WM_KEYDOWN
   push eax
   call PostMessage
   call PostMessage
end;
Ga-sergey вне форума Ответить с цитированием
Старый 25.05.2010, 01:23   #2
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

Код:
procedure EmulateKey(Wnd: HWND; VKey: Integer);
asm
   push 0
   push edx
   push 0101H //WM_KEYUP
   push eax
   call PostMessage
   push 0
   push edx
   push 0100H //WM_KEYDOWN
   push eax
   call PostMessage
end;
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.
notHaker вне форума Ответить с цитированием
Старый 25.05.2010, 10:32   #3
Ga-sergey
Пользователь
 
Регистрация: 09.03.2007
Сообщений: 34
По умолчанию

Вообще не работает
Ga-sergey вне форума Ответить с цитированием
Старый 25.05.2010, 10:51   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а зачем на асме то?
notHaker, после возврата из процедур значение регистров общего назначения не сохраняется.
PS: вы уверены что окно то?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 25.05.2010, 11:07   #5
Ga-sergey
Пользователь
 
Регистрация: 09.03.2007
Сообщений: 34
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а зачем на асме то?
notHaker, после возврата из процедур значение регистров общего назначения не сохраняется.
PS: вы уверены что окно то?
На асме потому что пример на нём практически сразу нашёл, и оно более-мение работает
Я сначала ищу Handle окон которые мне нужны, при том если окно будет всего одно - всё работает нормально, а вот если больше - тогда работает только активное окно
PS:Да, уверен то что окно именно то что мне нужно
Ga-sergey вне форума Ответить с цитированием
Старый 27.05.2010, 21:59   #6
Ga-sergey
Пользователь
 
Регистрация: 09.03.2007
Сообщений: 34
По умолчанию

Пометка для будущих поколений)
Код упомянутый в первом посте всё-таки самый надёжный и намного более быстрый чем остальные.
Так же возможно отправить нажатие клавиши функцией SendMessage()
Код:
SendMessage(HWND,WM_KEYDOWN (евент нажатия на клавишу), код клавиши,0);
Ga-sergey вне форума Ответить с цитированием
Старый 27.05.2010, 23:21   #7
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

1 2 3 4 5 6 7

p.s.: пометка для пользователей - учитесь пользоваться поиском.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Эмуляция нажатия клавиши в любом активном приложении Marsel737 Общие вопросы Delphi 1 19.03.2010 14:44
Эмуляция нажатия клавиши helenfly Win Api 9 01.12.2009 12:09
Эмуляция нажатия CTRL-V в чужом окне ]Wowan[ Общие вопросы Delphi 0 25.04.2009 18:42
Эмуляция нажатия клавиши при отметке Checkbox delphi_beginner Win Api 3 02.06.2007 10:07
Эмуляция нажатия клавиши...... Zoidberg Win Api 4 11.01.2007 18:44