Эмуляция клика мышки в LCL
Модератор: Модераторы
Эмуляция клика мышки в LCL
Есть ли способ эмулировать клик мышки не выходя за границы LCL? Т.е. чтобы было кроссплатформенно...
А какая разница ?
Например для клавиатуры одна строчка WinApi (Но SendMessage если не ошибаюсь вроде вполне кросплатформенный вызов ):
(ну или PostMessage(Handle,WM_SYSKEYDOWN,k,0);)
По идее должно работать и это
Но особого смысла в замене не вижу ..
Мышка эмулируется аналогично... ( через WM_SYSMOUSEDOWN и Application. ControlMouseDown)
Например для клавиатуры одна строчка WinApi (Но SendMessage если не ошибаюсь вроде вполне кросплатформенный вызов ):
Код: Выделить всё
Procedure EmuDown ; Var K:Word; Begin K:=vk_Down;SendMessage(Form1.Handle,WM_SYSKEYDOWN,k,0); end;
(ну или PostMessage(Handle,WM_SYSKEYDOWN,k,0);)
По идее должно работать и это
Код: Выделить всё
Procedure EmuDown_LCL ; Var K:Word; Begin K:=vk_Down; Application. ControlKeyDown(Form1,k,[]);end;Но особого смысла в замене не вижу ..
Мышка эмулируется аналогично... ( через WM_SYSMOUSEDOWN и Application. ControlMouseDown)
Последний раз редактировалось Alex2013 30.10.2018 15:42:19, всего редактировалось 3 раза.
Alex2013

Vadim писал(а):чтобы было кроссплатформенно...
Vadim писал(а):Alex2013Vadim писал(а):чтобы было кроссплатформенно...
А чем не подходит Application. ControlMouseDown ?
Vadim есть. Компоненты лазаря посмотрите (папку)...
А что собственно надо то?
А что собственно надо то?
Alex2013 писал(а):А чем не подходит Application. ControlMouseDown ?
Не нашёл такого...
pupsik писал(а):Компоненты лазаря посмотрите (папку)...
Описания маловато. Приходится по очереди испытывать разные методы на предмет того, чтобы они работали как нужно.
pupsik писал(а):А что собственно надо то?
Нужно сымитировать нажатие пользователем или мышки или клавиши. Есть программа, которая своим окошком блокирует доступ к компу. Пользователь подносит свою карту доступа к антенне и комп разблокируется. Если нет активности, т.е. не жмётся клава или мышь, то комп опять блокируется. Нужно сымитировать активность при убирании блокирующего окна с экрана.
Гм ... В самом деле нет ...Vadim писал(а):Alex2013 писал(а):А чем не подходит Application. ControlMouseDown ?
Не нашёл такого...
Голову не приходит ничего хорошего кроме использования модуля mouseamdkeyinput.pas
(Не знаю уж как там с кроссплаформенностью и координатами (возможно нужны экранные ) )
Зы
На гугле вас точно забанилии....
viewtopic.php?f=5&t=9615
Зы Зы
Что бы разобраться мешающим окошком или приложением ничего "нажимать" не нужно ... Можно просто "по килять" процесс или послать сигнал на закрытие окна . (Но если это реально умная зашита то блокировка клавиатуры и мыши идут на системном уровне а сообщение в окне просто для "удобства отдыхающих " )
Последний раз редактировалось Alex2013 30.10.2018 17:55:13, всего редактировалось 1 раз.
Alex2013 писал(а):Голову не приходит ничего хорошего кроме использования модуля mouseamdkeyinput.pashttp://wiki.freepascal.org/MouseAndKeyInput
(Не знаю уж как там с кроссплаформенностью и координатами (возможно нужны экранные ) )
Зы
На гугле вас точно забанилии....Но прямо на форуме поискать трудно было ?
viewtopic.php?f=5&t=9615
В Линуксе нужно дополнительную библиотеку устанавливать, иначе работать не будет.
Еще где-то в дебрях Лазаруса есть вот такой модуль ... JwaWinUser.pas
https://searchcode.com/codesearch/view/6415339/ (По ссылке качать только если не найдется )
А по поводу библиотеки вполне возможно что она и так уже установлена (системная же !
) ...
Зы
А еще Xtst можно по идее статически приликовать ...
{$linklib Xtst} - возможно я что-то путаю но идея понятна .
(В винде вообще достаточно DLL кинуть в один каталог с исполняемым файлом - знаю в "общем виде" этот фокус в Линуксе не проходит...
Но может программа на Лазарус чуток умнее средне статистического "квадратно-гездового " Линукс приложения окажется ?
)
зы зы
И разумеется никто по идее не может помешать локально дописать переименую LD_LIBRARY_PATH перед запуском программы .
----
Ну все извиняюсь увлекся !(Просто самому интересно стало. )
https://searchcode.com/codesearch/view/6415339/ (По ссылке качать только если не найдется )
А по поводу библиотеки вполне возможно что она и так уже установлена (системная же !
Зы
А еще Xtst можно по идее статически приликовать ...
{$linklib Xtst} - возможно я что-то путаю но идея понятна .
(В винде вообще достаточно DLL кинуть в один каталог с исполняемым файлом - знаю в "общем виде" этот фокус в Линуксе не проходит...
Но может программа на Лазарус чуток умнее средне статистического "квадратно-гездового " Линукс приложения окажется ?
зы зы
И разумеется никто по идее не может помешать локально дописать переименую LD_LIBRARY_PATH перед запуском программы .
----
Ну все извиняюсь увлекся !(Просто самому интересно стало. )
Alex2013 писал(а):А по поводу библиотеки вполне возможно что она и так уже установлена (системная же !) ...
Сейчас у себя посмотрел - действительно, уже стоит. На работе ещё завтра гляну. Если есть, тогда попробую с MouseAndKeyInput поиграться...
