|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.05.2014, 00:11 | #1 |
Форумчанин
Регистрация: 17.02.2014
Сообщений: 881
|
Эмуляция нажатия ЛКМ в приложении под мышкой
Пробовал вот это:
SetCursorPos(x1,y1); Application.ProcessMessages; sleep(1300); Mouse_Event( MOUSEEVENTF_LEFTDOWN, x1,y1,0,0); Application.ProcessMessages; sleep(500); Mouse_Event( MOUSEEVENTF_LEFTUP, x1,y1,0,0); Application.ProcessMessages; sleep(1300); В различных комбинациях задержек. Получается чер ти што. В одном приложении жмется без проблем( другое приложение делфи для подсчета скорости нажатия на кнопку), а в нужном мне то вообще не жмется то жмется непонятно по какому закону- то жмется то не жмется. Кто может дать работоспособный код. При этом желательно чтобы он был быстрый на нажатие до 0.5 сек на нажатие. Возможно по какойто причине происходит потеря фокуса, не знаю. Пробовал убирать Application.ProcessMessages; вразумительной работы не получил. |
09.05.2014, 00:44 | #2 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
...уберите слипы, перейдите на SendMessage(). И да, приложение приложению - рознь. Об чем речь конкретно? Об игре с выводом через DirectX, скайпе, браузерке?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
09.05.2014, 03:49 | #3 | |
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
Application.ProcessMessages в данном случае бесполезен. Советую почитать о случаях его применения.
Цитата:
Последний раз редактировалось doktor255; 09.05.2014 в 03:53. |
|
09.05.2014, 11:08 | #4 |
Форумчанин
Регистрация: 17.02.2014
Сообщений: 881
|
Нужно нажимать на игровом приложении - клиенте MMDOC. Что оно использует для прорисовки DirectX или нет не знаю.
Приложение в оконном режиме работает. Поэтому мне просто нужно чтобы ЛКМ нажималось в на текущем окне, в данном случае в окне MMDOC. А по Вашему совету мне еще нужно узнавать хэндл окна при применении SendMessage(). Узнаю хэндл окна и посылаю сообщение на клик: procedure TForm1.Button1Click(Sender: TObject); var h:hwnd;pchar;mk:Cardinal;index:in teger; begin sleep(1000); h:=GetWindow(GetForegroundWindow,GW _HWNDFIRST); getmem(p,2000); GetWindowText(h,p,mk); while (pos('Might & Magic : Duel of Champions - Multiplayer Ranked Game - RendezVous',p)=0)and(h<>0) do begin h:=GetWindow(h,GW_HWNDNEXT); // GetWindowText(h,p,mk); end; for index:=1 to 10 do begin SetCursorPos(1052,719); SendMessage(h, WM_LBUTTONDOWN,MK_LBUTTON,MAKELPARA M(1052,719)); SendMessage(h, WM_LBUTTONUP,MK_LBUTTON,MAKELPARAM( 1052,719)); edit3.Text:=inttostr(h); end; end; Все равно ничего не нажимается Последний раз редактировалось Illusiony; 09.05.2014 в 14:38. |
09.05.2014, 16:37 | #5 |
Форумчанин
Регистрация: 17.02.2014
Сообщений: 881
|
есть идеи?
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Передача нажатия ЛКМ в другое окно | Kazik | Общие вопросы Delphi | 4 | 18.04.2013 01:16 |
Вывод MessageBox после тройного и более нажатия ЛКМ | RAZOR1703 | Win Api | 10 | 18.10.2011 19:23 |
Эмуляция нажатия клавиш | KamiMAN | Общие вопросы Delphi | 5 | 13.03.2011 06:24 |
Эмуляция нажатия клавиши в любом активном приложении | Marsel737 | Общие вопросы Delphi | 1 | 19.03.2010 14:44 |
Перехват нажатия ЛКМ [Delphi/Hooks] | anGeee | Win Api | 1 | 07.12.2009 00:58 |