Кибор » Кибор - Интегрированная среда разработки ботов » О программе Кибор » Версия 3.27 sendmessage и postmessage. Отправка любых сообщений в систему

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

41. Vous - 22 Февраля, 2023 - 02:26:05 - перейти к сообщению
 Zireael пишет:
 Цитата:
Нужно добавить BM_GETCHECK

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


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

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

Дайте кусок кода чтобы ставить или снимать галку осознано
то есть нужен анализ состояния чек бокса перед установкой галки.
именно программно без анализа экрана (скрина) поиска изображения.
К примеру мне нужно поставить галку и если она стоит уже то ничего не делаем.
И наоборот если галки в контроле нет то ставим.
42. Zireael - 22 Февраля, 2023 - 02:51:56 - перейти к сообщению
 Цитата:
Дайте кусок кода чтобы ставить или снимать галку

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("Окно не найдено");
43. Martin - 17 Апреля, 2023 - 15:26:23 - перейти к сообщению
А как отправить комбинацию клавиш Ctrl+C для копирования выделенного текста? Через sendmessage
44. Zireael - 17 Апреля, 2023 - 23:48:36 - перейти к сообщению
 Цитата:
А как отправить комбинацию клавиш Ctrl+C для копирования выделенного текста? Через sendmessage

Зажать Ctrl функцией sendkeydown, нажать C функцией send , отпустить Ctrl функцией sendkeyup.
Многие приложения не обрабывают комбинации клавиш в фоновом окне. Иногда работает зажатие клавиш модификаторов функцией keydown, а отправка send, но в таком случае Ctrl будет зажиматься для всех приложений, а не конкретного окна.
45. Martin - 18 Апреля, 2023 - 11:39:16 - перейти к сообщению
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("Окно не найдено");

Но не работает
46. Zireael - 18 Апреля, 2023 - 12:00:15 - перейти к сообщению
Martin, сообщение нужно отправлять контролу, а не главному окну.
Для блокнота нужно оправлять в сообщение в edit.
С кодом не могу помочь, т. к. не дома.
47. Martin - 18 Апреля, 2023 - 12:18:28 - перейти к сообщению
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);
48. Kibor - 18 Апреля, 2023 - 12:23:44 - перейти к сообщению
 Martin пишет:
А как узнать имя контрл если он не отображается через шпион Кибора?

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

Можно. На Деревню Дедушке.
Но Кибор не вынесет синтаксиса. Должен быть адресат.
49. Martin - 18 Апреля, 2023 - 12:31:12 - перейти к сообщению
Kibor , не отправляет через окно.
(Добавление)
А как отправлять в активное окно?
50. Kibor - 18 Апреля, 2023 - 12:58:16 - перейти к сообщению
 Martin пишет:
А как отправлять в активное окно?


Использовать key(для просмотра ссылки Вам необходимо авторизоваться)

Powered by ExBB FM 1.0 Final