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

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

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

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

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

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

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


Использовать key(для просмотра ссылки Вам необходимо авторизоваться)
50. Martin - 18 Апреля, 2023 - 13:02:47 - перейти к сообщению
Kibor , Понял, так не получится, нужно чтобы ctrl при копирование не нажимался а команда скопировать отправлялась.

Powered by ExBB FM 1.0 Final