Эмуляция клика мышки в LCL

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Эмуляция клика мышки в LCL

Сообщение Vadim »

Есть ли способ эмулировать клик мышки не выходя за границы LCL? Т.е. чтобы было кроссплатформенно...
Alex2013
долгожитель
Сообщения: 3212
Зарегистрирован: 03.04.2013 11:59:44

Сообщение Alex2013 »

А какая разница ?
Например для клавиатуры одна строчка 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 раза.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Alex2013
Vadim писал(а):чтобы было кроссплатформенно...

;-)
Alex2013
долгожитель
Сообщения: 3212
Зарегистрирован: 03.04.2013 11:59:44

Сообщение Alex2013 »

Vadim писал(а):Alex2013
Vadim писал(а):чтобы было кроссплатформенно...

;-)

А чем не подходит Application. ControlMouseDown ?
pupsik
энтузиаст
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13
Контактная информация:

Сообщение pupsik »

Vadim есть. Компоненты лазаря посмотрите (папку)...

А что собственно надо то?
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Alex2013 писал(а):А чем не подходит Application. ControlMouseDown ?

Не нашёл такого...

pupsik писал(а):Компоненты лазаря посмотрите (папку)...

Описания маловато. Приходится по очереди испытывать разные методы на предмет того, чтобы они работали как нужно.
pupsik писал(а):А что собственно надо то?

Нужно сымитировать нажатие пользователем или мышки или клавиши. Есть программа, которая своим окошком блокирует доступ к компу. Пользователь подносит свою карту доступа к антенне и комп разблокируется. Если нет активности, т.е. не жмётся клава или мышь, то комп опять блокируется. Нужно сымитировать активность при убирании блокирующего окна с экрана.
Alex2013
долгожитель
Сообщения: 3212
Зарегистрирован: 03.04.2013 11:59:44

Сообщение Alex2013 »

Vadim писал(а):
Alex2013 писал(а):А чем не подходит Application. ControlMouseDown ?

Не нашёл такого...

Гм ... В самом деле нет ... :roll:
Голову не приходит ничего хорошего кроме использования модуля mouseamdkeyinput.pas
:arrow: http://wiki.freepascal.org/MouseAndKeyInput :idea:
(Не знаю уж как там с кроссплаформенностью и координатами (возможно нужны экранные ) )

Зы
На гугле вас точно забанилии.... :wink: Но прямо на форуме поискать трудно было ? :roll:
viewtopic.php?f=5&t=9615

Зы Зы
Что бы разобраться мешающим окошком или приложением ничего "нажимать" не нужно ... Можно просто "по килять" процесс или послать сигнал на закрытие окна . (Но если это реально умная зашита то блокировка клавиатуры и мыши идут на системном уровне а сообщение в окне просто для "удобства отдыхающих " )
Последний раз редактировалось Alex2013 30.10.2018 17:55:13, всего редактировалось 1 раз.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Alex2013 писал(а):Голову не приходит ничего хорошего кроме использования модуля mouseamdkeyinput.pas
:arrow: http://wiki.freepascal.org/MouseAndKeyInput :idea:
(Не знаю уж как там с кроссплаформенностью и координатами (возможно нужны экранные ) )

Зы
На гугле вас точно забанилии.... :wink: Но прямо на форуме поискать трудно было ? :roll:
viewtopic.php?f=5&t=9615

В Линуксе нужно дополнительную библиотеку устанавливать, иначе работать не будет.
Alex2013
долгожитель
Сообщения: 3212
Зарегистрирован: 03.04.2013 11:59:44

Сообщение Alex2013 »

Еще где-то в дебрях Лазаруса есть вот такой модуль ... JwaWinUser.pas
https://searchcode.com/codesearch/view/6415339/ (По ссылке качать только если не найдется )

А по поводу библиотеки вполне возможно что она и так уже установлена (системная же ! :idea: ) ...
Зы
А еще Xtst можно по идее статически приликовать ...
{$linklib Xtst} - возможно я что-то путаю но идея понятна .
(В винде вообще достаточно DLL кинуть в один каталог с исполняемым файлом - знаю в "общем виде" этот фокус в Линуксе не проходит...
Но может программа на Лазарус чуток умнее средне статистического "квадратно-гездового " Линукс приложения окажется ? :idea: )

зы зы
И разумеется никто по идее не может помешать локально дописать переименую LD_LIBRARY_PATH перед запуском программы .
----
Ну все извиняюсь увлекся !(Просто самому интересно стало. )
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Alex2013 писал(а):А по поводу библиотеки вполне возможно что она и так уже установлена (системная же ! :idea: ) ...

Сейчас у себя посмотрел - действительно, уже стоит. На работе ещё завтра гляну. Если есть, тогда попробую с MouseAndKeyInput поиграться... ;-)
Ответить