Кибор » Кибор - Интегрированная среда разработки ботов » О программе Кибор » Версия 4.05 Немодальные диалоговые окна. Интерактивное управление программой через диалоги.

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

71. Kibor - 27 Января, 2021 - 10:21:22 - перейти к сообщению
Пример проверки пинга и вывода пинга на диалог ограниченное количество времени с выходом из режима пингования.

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();//Завершим процесс и закрываем канал
}
72. Gormit - 12 Апреля, 2021 - 03:02:11 - перейти к сообщению
А как сделать, чтобы после остановки скрипта через ctrl+shift+z в собранном exe, не появлялось окно запуска скрипта кибора?
Раньше использовал графический интерфейс (CREATE_INTERFACE), так вот после остановки скрипта через ctrl+shift+z - возвращался обратно к графическому интерфейсу, а по закрытии его, ничего не появлялось.
Сейчас использую модальное окно (showdialog(0, "Диалог", 100, 100, 100, 100, 3, 1)), так как графический интерфейс ограничен по функционалу. Седьмой параметр выбираю "3", при нажатии на крестик - все нормально закрывается (причем если это тест, то и закрывает среду разработки кибор, что очень неприятно), а вот если просто остановить работу скрипта ctrl+shift+z - получаем окно запуска скрипта кибора.
Может как-то можно реализовать остановку скрипта и сразу автоматический запуск с showdialog... Или создать свой таймер с отслеживанием другого сочетания клавиш для остановки и моментального запуска?
73. Zireael - 12 Апреля, 2021 - 03:34:33 - перейти к сообщению
 Цитата:
А как сделать, чтобы после остановки скрипта через 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); // скрыть диалоговое окно
}
74. Gormit - 13 Апреля, 2021 - 13:39:50 - перейти к сообщению
Zireael , Спасибо огромное.
75. Gormit - 20 Апреля, 2021 - 05:27:47 - перейти к сообщению
Что-то я не совсем врубаюсь в магию работы этих модальных окон. Если с графическим интерфейсом все было предельно понятно и при остановке скрипта все "косяки" и таймеры останавливались автоматически, то с модальным окном у меня все намного хуже)))) Я понимаю что скрипт продолжает работать и жить своей жизнью.

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?
76. Zireael - 20 Апреля, 2021 - 06:07:28 - перейти к сообщению
 Цитата:
Тут начало
Тут код

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

Нет.
77. Kibor - 20 Апреля, 2021 - 08:03:03 - перейти к сообщению
 Gormit пишет:
И может есть какой-то инструмент вроде "визуальный редактор диалогов" для создания этих самых диалогов с помощью extrnal и WinAPI?


Как раз делаю новый визуальный редактор диалогов для Визуального редактора кода.
Гораздо удобнее чем существующий.
Если руки дойдут, на его основе возможно как то сделаю генератор диалогов различного типа.
Редактор диалогов тут:
Новый Визуальный редактор
78. Diskdisk - 02 Мая, 2022 - 13:40:37 - перейти к сообщению
Как програмно сделать перенос строки в текстовом поле? \r и \n не работают.
79. Zireael - 02 Мая, 2022 - 13:59:05 - перейти к сообщению
 Цитата:
Как програмно сделать перенос строки в текстовом поле? \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);
80. Diskdisk - 02 Мая, 2022 - 14:32:27 - перейти к сообщению
 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);

спасибо за оперативность! Работает)

Powered by ExBB FM 1.0 Final