Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013 Откуда: Одесса
Репутация: 357
Задали вопрос, как дублировать мышь и клавиатуру во втором окне работая с первым.
Видео я снимал
Как дублировать работу с мышью и клавиатурой в другом окне
Привожу еще код, который сейчас набросал
CODE:
//Указатели на контролы двух блокнотов (учитывая их позиции на экране)
win w1=window (-1, "Edit", window (-1, "Notepad", 115, 70, -1, -1, -1));
win w2=window (-1, "Edit", window (-1, "Notepad", 136, 591, -1, -1, -1));
if (w1==0 || w2==0) messagebox ("Не верные указатели");
int k;
int t=0;//Переменная которая не дает выполнять серию нажатий при однократном нажатие
int x, y;
loop()
{
k=0;
for (int n=0; n<256; n++)
{
k=getkeystate(n);//Если накая то кнопка нажата
if (k==1)//Нажатие есть
{
if (t==0)//Оно первое
{
if (n<5)//Мышь
{
getmouse(x, y, w1);//Узнаем координаты мыши в момент клика
if (n==1)sendmouse (LEFT, x, y, w2);
if (n==2)sendmouse (RIGHT, x, y, w2);
if (n==4)sendmouse (MIDDLE, x, y, w2);
}
else sendkeydown(n, w2);//Клавиатура
t=1;
break;
}
else break;
}
}
if (k==0) t=0;
sleep(10);
}
Покинул форум
Сообщений всего: 5
Дата рег-ции: Янв. 2024
Репутация: 0
Всем доброго дня, попытался добавить боковую клавишу для мыши.
Поменял if (n<5) на if (n<6), а так же добавил строчку
CODE:
if (n==5)sendmouse (FORWARD, x, y, w2);
Само по себе работает все, однако как только нажимаю ту самую клавишу выдает такую ошибку.
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Код клавиши указан верно однако на счет константы не уверен, я попробовал множество разных вариантов правда все зря,
на сайте кибор в таблице кодов и констант клавиш для мыши всего 3 кода на три кнопки: LEFT, RIGHT, MIDDLE.
Будьте добры, подскажите кто нибудь другие кнопки.
Zireael
Отправлено: 31 Июля, 2024 - 12:21:25
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013 Откуда: Одесса
Репутация: 357
WeWetko пишет:
FORWARD
Такой константы нет в Кибор и какой ее код я не знаю.
sendmouse может работать только с LEFT RIGHT MIDDLE
Для того что бы реализовать ее с нужными вами константами, надо сделать самому ее реализацию.
Ниже приведенный код реализует это.
Тут можно добавить кнопки какие угодно самому.
CODE:
//Указатели на контролы двух блокнотов (учитывая их позиции на экране)
win w1=window (-1, "Edit", window (-1, "Notepad", 115, 70, -1, -1, -1));
win w2=window (-1, "Edit", window (-1, "Notepad", 136, 591, -1, -1, -1));
if (w1==0 || w2==0) messagebox ("Не верные указатели");
int k;
int t=0;//Переменная которая не дает выполнять серию нажатий при однократном нажатие
int x, y;
loop()
{
k=0;
for (int n=0; n<256; n++)
{
k=getkeystate(n);//Если накая то кнопка нажата
if (k==1)//Нажатие есть
{
if (t==0)//Оно первое
{
if (n<5)//Мышь
{
getmouse(x, y, w1);//Узнаем координаты мыши в момент клика
if (n==1)SendMouse (1, x, y, w2);//LEFT
if (n==2)SendMouse (2, x, y, w2);//RIGHT
if (n==4)SendMouse (4, x, y, w2);//MIDDLE
//Тут добавить нужный блок
}
else sendkeydown(n, w2);//Клавиатура
t=1;
break;
}
else break;
}
}
if (k==0) t=0;
sleep(10);
}
function SendMouse(int ConstM, int x, int y, win w)
{
int lParam = makelparam(x, y);
postmessage(WM_MOUSEMOVE, 0, lParam, w);
if (ConstM==1)//LEFT
{
postmessage(WM_LBUTTONDOWN, ConstM, lParam, w);
sleep(50);
postmessage(WM_LBUTTONUP, 0, lParam, w);
}
if (ConstM==2)//RIGHT
{
postmessage(WM_RBUTTONDOWN, ConstM, lParam, w);
sleep(50);
postmessage(WM_RBUTTONUP, 0, lParam, w);
}
if (ConstM==4)//MIDDLE
{
postmessage(WM_MBUTTONDOWN, ConstM, lParam, w);
sleep(50);
postmessage(WM_MBUTTONUP, 0, lParam, w);
}
//Тут добавить нужный блок
}
WeWetko
Отправлено: 31 Июля, 2024 - 13:20:44
Прохожий
Покинул форум
Сообщений всего: 5
Дата рег-ции: Янв. 2024
Репутация: 0
Даже ничего не добавляя попытался запустить, вылетает с ошибкой
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Kibor
Отправлено: 31 Июля, 2024 - 13:33:49
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013 Откуда: Одесса
Репутация: 357
Кибор должен обновиться.
Перезапустите его.
Если не обновляется запустите программу Update
WeWetko
Отправлено: 31 Июля, 2024 - 13:49:41
Прохожий
Покинул форум
Сообщений всего: 5
Дата рег-ции: Янв. 2024
Репутация: 0
Kibor пишет:
Кибор должен обновиться.
Перезапустите его.
Если не обновляется запустите программу Update
Огромное вам спасибо за помощь, все работает, как нибудь куплю подписку!
Rainn
Отправлено: 24 Сентября, 2024 - 10:23:00
Прохожий
Покинул форум
Сообщений всего: 13
Дата рег-ции: Сент. 2024
Репутация: 0
Добрый день. Объясните пожалуйста, или тыкните где можно посмотреть за что отвечают эти параметры?
//Указатели на контролы двух блокнотов (учитывая их позиции на экране)
win w1=window (-1, "Edit", window (-1, "Notepad", 115, 70, -1, -1, -1));
win w2=window (-1, "Edit", window (-1, "Notepad", 136, 591, -1, -1, -1));
Пробовал запускать скрипт как в видео с Paint, названия окон совпадают, дублирования действий не происходит.
В дальнейшем хочу дублировать действия на окнах la2 и здесь вопрос, будет ли работать скрипт данного рода с Arduino? Надо ли что-то менять?
Спасибо.
Zireael
Отправлено: 24 Сентября, 2024 - 11:38:20
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
Цитата:
где можно посмотреть за что отвечают эти параметры?
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.