Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (6): « 1 2 3 4 [5] 6 »   

> Описание: sendmessage и postmessage. Отправка любых сообщений в систему
Vous
Отправлено: 22 Февраля, 2023 - 10:26:05
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 4
Дата рег-ции: Окт. 2022  
Репутация: 0




 Zireael пишет:
 Цитата:
Нужно добавить BM_GETCHECK

Куда добавить? Если в ваш код, то выкладывайте код.


Прошу сильно не пинать Улыбка я в Кибор всего неделю осваиваю.

код
activate (window ("Отправить в УТМ", "TCheckBox", -1)); // Активирует контрол
win w=window ("Отправить в УТМ", "TCheckBox", -1); // Передаем имя контрола переменой W
postmessage(BM_GETCHECK, 0, 0, w) // кликаем в чек бокс (если галки небыло будет) (если галка была то уйдет)

Дайте кусок кода чтобы ставить или снимать галку осознано
то есть нужен анализ состояния чек бокса перед установкой галки.
именно программно без анализа экрана (скрина) поиска изображения.
К примеру мне нужно поставить галку и если она стоит уже то ничего не делаем.
И наоборот если галки в контроле нет то ставим.

(Отредактировано автором: 22 Февраля, 2023 - 10:27:42)

 
 Top
Zireael
Отправлено: 22 Февраля, 2023 - 10:51:56
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4397
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
Дайте кусок кода чтобы ставить или снимать галку

CODE:
#define BM_GETCHECK 0x00F0
#define BM_SETCHECK 0x00F1
#define BM_GETSTATE 0x00F2
#define BST_UNCHECKED 0x0000
#define BST_CHECKED 0x0001


win w = window ("Отправить в УТМ", "TCheckBox", -1);
if(w) // если окно найдено
{
int state = sendmessage(BM_GETSTATE, 0, 0, w); // получить состояние галки

if(state==BST_UNCHECKED)messagebox("Галка не установлена");
if(state==BST_CHECKED)messagebox("Галка установлена");

sendmessage(BM_SETCHECK, BST_CHECKED, 0, w); // установить галку
pause(2000);
sendmessage(BM_SETCHECK, BST_UNCHECKED, 0, w); // снять галку
pause(2000);
}
else messagebox("Окно не найдено");
 
 Top
Martin
Отправлено: 17 Апреля, 2023 - 23:26:23
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 121
Дата рег-ции: Июнь 2022  
Репутация: 1




А как отправить комбинацию клавиш Ctrl+C для копирования выделенного текста? Через sendmessage
 
 Top
Zireael
Отправлено: 18 Апреля, 2023 - 07:48:36
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4397
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
А как отправить комбинацию клавиш Ctrl+C для копирования выделенного текста? Через sendmessage

Зажать Ctrl функцией sendkeydown, нажать C функцией send , отпустить Ctrl функцией sendkeyup.
Многие приложения не обрабывают комбинации клавиш в фоновом окне. Иногда работает зажатие клавиш модификаторов функцией keydown, а отправка send, но в таком случае Ctrl будет зажиматься для всех приложений, а не конкретного окна.
 
 Top
Martin
Отправлено: 18 Апреля, 2023 - 19:39:16
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 121
Дата рег-ции: Июнь 2022  
Репутация: 1




Zireael , а именно через sendmessage как сделать?
Пытался по аналогии сделать.
[quote](для просмотра ссылки Вам необходимо авторизоваться) /quote]
вроде как я понял параметры 0
CODE:
#define WM_COPY 0x0301

win w = window (-1, "Notepad", -1);
if(w) // если найдено
{
sendmessage(WM_COPY,0, 0, w);
}
else messagebox("Окно не найдено");

Но не работает
 
 Top
Zireael
Отправлено: 18 Апреля, 2023 - 20:00:15
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4397
Дата рег-ции: Нояб. 2017  
Репутация: 580




Martin, сообщение нужно отправлять контролу, а не главному окну.
Для блокнота нужно оправлять в сообщение в edit.
С кодом не могу помочь, т. к. не дома.
 
 Top
Martin
Отправлено: 18 Апреля, 2023 - 20:18:28
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 121
Дата рег-ции: Июнь 2022  
Репутация: 1




Zireael , Спасибо, так всё работает. А как узнать имя контрл если он не отображается через шпион Кибора?

CODE:
#define WM_COPY 0x0301

win w=window (-1, "Edit", window ("*Безымянный – Блокнот", "Notepad", -1));

if(w) // если найдено
{
sendmessage(WM_COPY,0, 0, w);
}
else messagebox("Окно не найдено");


И ещё вопрос а можно отправить команду в не окно а просто,
так не работает sendmessage(WM_COPY,0,0,-1);
 
 Top
Kibor
Отправлено: 18 Апреля, 2023 - 20:23:44
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8095
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




 Martin пишет:
А как узнать имя контрл если он не отображается через шпион Кибора?

Значит его нет. Есть только окно. В него и шлите.
(Добавление)
 Martin пишет:
команду в не окно а просто,
так не работает sendmessage(WM_COPY,0,0,-1);

Можно. На Деревню Дедушке.
Но Кибор не вынесет синтаксиса. Должен быть адресат.
 
 Top
Martin
Отправлено: 18 Апреля, 2023 - 20:31:12
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 121
Дата рег-ции: Июнь 2022  
Репутация: 1




Kibor , не отправляет через окно.
(Добавление)
А как отправлять в активное окно?
 
 Top
Kibor
Отправлено: 18 Апреля, 2023 - 20:58:16
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8095
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




 Martin пишет:
А как отправлять в активное окно?


Использовать key(для просмотра ссылки Вам необходимо авторизоваться)
 
 Top
Страниц (6): « 1 2 3 4 [5] 6 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« О программе Кибор »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by