Vous |
Отправлено: 22 Февраля, 2023 - 10:26:05
|
Прохожий
Покинул форум
Сообщений всего: 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) |
|
|
Zireael |
Отправлено: 22 Февраля, 2023 - 10:51:56
|
Эксперт
Покинул форум
Сообщений всего: 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("Окно не найдено"); |
|
|
Martin |
Отправлено: 18 Апреля, 2023 - 20:18:28
|
Мастер
Покинул форум
Сообщений всего: 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); |
|
|
Kibor |
Отправлено: 18 Апреля, 2023 - 20:23:44
|
Эксперт
Покинул форум
Сообщений всего: 8095
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 355
|
Martin пишет: А как узнать имя контрл если он не отображается через шпион Кибора?
Значит его нет. Есть только окно. В него и шлите.
(Добавление)
Martin пишет: команду в не окно а просто,
так не работает sendmessage(WM_COPY,0,0,-1);
Можно. На Деревню Дедушке.
Но Кибор не вынесет синтаксиса. Должен быть адресат. |
|
|
|