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

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

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

> Описание: Немодальные диалоговые окна. Интерактивное управление программой через диалоги.
Kibor
Отправлено: 27 Января, 2021 - 18:21:22
Post Id



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


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




Пример проверки пинга и вывода пинга на диалог ограниченное количество времени с выходом из режима пингования.

CODE:
int pos_size_static0[1][4];
string text_static0[1];

pos_size_static0[0][0]=9; pos_size_static0[0][1]=9; pos_size_static0[0][2]=398; pos_size_static0[0][3]=367;
text_static0[0]="";

//////////

createdialog(0, STATIC, #pos_size_static0[0][0], #text_static0[0]);
//////////

showdialog(0, "Диалог", 207, 109, 426, 422, 1, 1);
//////////

//loop() sleep(10);//Убрать после теста

if (createpipeprocess("C:\Windows\System32\cmd.exe -i"))
{
int C;
string S;
char G[1000000];
int n=0;
sendpipe("ping googl.com -t^n");//Отправляем команду ping googl.com -t
waitpipe();//Ждем пока отработает и появятся данные
sleep(500);//для надежности
A: looptime(3000)//Считываем в течение 3 секунд
{
C=getpipe(#G[n]);
n=n+C;
text_static0[0]=d866tow1251 (format(#G[0]));
if (n>1000) break;
sleep(10);
if (C!=0) goto A;
}
messagebox ("Завершено");
closepipeprocess();//Завершим процесс и закрываем канал
}
 
 Top
Gormit
Отправлено: 12 Апреля, 2021 - 11:02:11
Post Id



Пользователь
Наблюдатель


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




А как сделать, чтобы после остановки скрипта через ctrl+shift+z в собранном exe, не появлялось окно запуска скрипта кибора?
Раньше использовал графический интерфейс (CREATE_INTERFACE), так вот после остановки скрипта через ctrl+shift+z - возвращался обратно к графическому интерфейсу, а по закрытии его, ничего не появлялось.
Сейчас использую модальное окно (showdialog(0, "Диалог", 100, 100, 100, 100, 3, 1)), так как графический интерфейс ограничен по функционалу. Седьмой параметр выбираю "3", при нажатии на крестик - все нормально закрывается (причем если это тест, то и закрывает среду разработки кибор, что очень неприятно), а вот если просто остановить работу скрипта ctrl+shift+z - получаем окно запуска скрипта кибора.
Может как-то можно реализовать остановку скрипта и сразу автоматический запуск с showdialog... Или создать свой таймер с отслеживанием другого сочетания клавиш для остановки и моментального запуска?
 
 Top
Zireael
Отправлено: 12 Апреля, 2021 - 11:34:33
Post Id



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


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




 Цитата:
А как сделать, чтобы после остановки скрипта через ctrl+shift+z в собранном exe, не появлялось окно запуска скрипта кибора?

CODE:
#define MOD_CONTROL 0x0002
#define MOD_SHIFT 0x0004
#define MOD_ALT 0x0001
#define Z_key 0x5A
external(INT, "RegisterHotKey", "RegisterHotKey", "User32.dll");

options ("stop","C"); // остановка скрипта Ctrl+Shift+C

createdialog(0);

_start:;
showdialog(0, "Dialog", 100, 100, 300, 200, 4, 1);

loop()
{
// тут сам скрипт
sleep(10);
}

function getmessage(0, WM_CREATE)
{
RegisterHotKey(gethwnd(0), 1, MOD_CONTROL + MOD_SHIFT, Z_key); // регистрация хоткея Ctrl+Shift+Z
}

function getmessage(0, WM_HOTKEY)
{
if(message.wparam==1)goto global _start; // переход к метке если нажат хоткей
}

function getmessage(0, WM_CLOSE)
{
// при нажатии на крестик (нужное раскомментировать)
//close(); // закрыть кибор
//goto global _start; // переход к метке
hidedialog(0); // скрыть диалоговое окно
}
 
 Top
Gormit
Отправлено: 13 Апреля, 2021 - 21:39:50
Post Id



Пользователь
Наблюдатель


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




Zireael , Спасибо огромное.
 
 Top
Gormit
Отправлено: 20 Апреля, 2021 - 13:27:47
Post Id



Пользователь
Наблюдатель


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




Что-то я не совсем врубаюсь в магию работы этих модальных окон. Если с графическим интерфейсом все было предельно понятно и при остановке скрипта все "косяки" и таймеры останавливались автоматически, то с модальным окном у меня все намного хуже)))) Я понимаю что скрипт продолжает работать и жить своей жизнью.

CODE:

//Тут начало графического блока start_();
#define MOD_CONTROL 0x0002
#define MOD_SHIFT 0x0004
#define MOD_ALT 0x0001
#define Z_key 0x5A
external(INT, "RegisterHotKey", "RegisterHotKey", "User32.dll");

options ("stop","C"); // остановка скрипта Ctrl+Shift+C

//Тут код диалога построенного инструментом "визуальный редактор диалогов"

createdialog(0);

_start:;

//тут останавливаю все таймеры

showdialog(0, "Dialog", 100, 100, 300, 200, 4, 1);

loop()
{
// тут у меня скрипт отвечающий за диалог
sleep(10);
}

function getmessage(0, WM_CREATE)
{
RegisterHotKey(gethwnd(0), 1, MOD_CONTROL + MOD_SHIFT, Z_key); // регистрация хоткея Ctrl+Shift+Z
}

function getmessage(0, WM_HOTKEY)
{
if(message.wparam==1)goto global _start; // переход к метке если нажат хоткей
}

function getmessage(0, WM_CLOSE)
{
// при нажатии на крестик (нужное раскомментировать)
close(); // закрыть кибор
//goto global _start; // переход к метке
hidedialog(0); // скрыть диалоговое окно
}

//а тут у меня скрипт отвечающий за логику бота и старт таймеров
//по завершении логики звуковой сигнал и переход к метке _start;



Возникают ситуации, что при нажатии Ctrl+Shift+Z - слышу не 1 звуковой сигнал, а 2 и более (как будто закрылось несколько потоков). Иногда при остановке и закрытии бота скрипт вообще не останавливается и висит в процессах, хотя визуально его не видно.
Что я делаю не так?
И может есть какой-то инструмент вроде "визуальный редактор диалогов" для создания этих самых диалогов с помощью extrnal и WinAPI?

(Отредактировано автором: 20 Апреля, 2021 - 13:36:48)

 
 Top
Zireael
Отправлено: 20 Апреля, 2021 - 14:07:28
Post Id



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


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




 Цитата:
Тут начало
Тут код

Эти тут никому ни о чём не скажут. Создайте отдельную тему, выложите код, который не работает или работает как-то не так. Тогда уже можно что-то подсказать.
 Цитата:
И может есть какой-то инструмент вроде "визуальный редактор диалогов" для создания этих самых диалогов с помощью extrnal и WinAPI?

Нет.

(Отредактировано автором: 20 Апреля, 2021 - 14:17:35)

 
 Top
Kibor
Отправлено: 20 Апреля, 2021 - 16:03:03
Post Id



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


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




 Gormit пишет:
И может есть какой-то инструмент вроде "визуальный редактор диалогов" для создания этих самых диалогов с помощью extrnal и WinAPI?


Как раз делаю новый визуальный редактор диалогов для Визуального редактора кода.
Гораздо удобнее чем существующий.
Если руки дойдут, на его основе возможно как то сделаю генератор диалогов различного типа.
Редактор диалогов тут:
Новый Визуальный редактор
 
 Top
Diskdisk
Отправлено: 02 Мая, 2022 - 21:40:37
Post Id



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


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




Как програмно сделать перенос строки в текстовом поле? \r и \n не работают.
 
 Top
Zireael
Отправлено: 02 Мая, 2022 - 21:59:05
Post Id



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


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




 Цитата:
Как програмно сделать перенос строки в текстовом поле? \r и \n не работают.

CODE:
int pos_size_edit0[1][4];
string text_edit0[1];

pos_size_edit0[0][0]=33; pos_size_edit0[0][1]=34; pos_size_edit0[0][2]=100; pos_size_edit0[0][3]=80;
text_edit0[0]="Text1^r^nText2^r^nText3";

createdialog(0, EDIT, #pos_size_edit0[0][0], #text_edit0[0]);
showdialog(0, "Диалог", 835, 390, 250, 300, 1, 1);

loop()sleep(10);
 
 Top
Diskdisk
Отправлено: 02 Мая, 2022 - 22:32:27
Post Id



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


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




 Zireael пишет:
 Цитата:
Как програмно сделать перенос строки в текстовом поле? \r и \n не работают.

CODE:
int pos_size_edit0[1][4];
string text_edit0[1];

pos_size_edit0[0][0]=33; pos_size_edit0[0][1]=34; pos_size_edit0[0][2]=100; pos_size_edit0[0][3]=80;
text_edit0[0]="Text1^r^nText2^r^nText3";

createdialog(0, EDIT, #pos_size_edit0[0][0], #text_edit0[0]);
showdialog(0, "Диалог", 835, 390, 250, 300, 1, 1);

loop()sleep(10);

спасибо за оперативность! Работает)
 
 Top
Страниц (9): « 1 2 3 4 5 6 7 [8] 9 »
Сейчас эту тему просматривают: 12 (гостей: 12, зарегистрированных: 0)
« О программе Кибор »


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




Powered by