Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Скрытие окна

Страниц (1): [1]
 

1. Nathgul - 05 Сентября, 2018 - 09:48:24 - перейти к сообщению
Человек давал ссылку на реализацию закрытия кибора крестиком в НДО

CODE:

external(INT, "IsWindowVisible", "IsWindowVisible", "User32.dll");

createdialog(0);
showdialog(0, "Диалог", 835, 390, 188, 114, 0, 1); // 0 - скрывать окно при нажатии на крестик
sleep(500);
win w=window("Диалог");
enabletimer(0);

loop() sleep(10);


CREATE_TIMER(0, 1000)
{
if(IsWindowVisible(formatwi(w))==0)messagebox("Окно скрыто"); // если окно скрыто
}


вот код... пометка есть что нужно ставить 0 если требуется сворачивать окно и потом отслеживается это и тд.
в редакторе диалогов в настройках окна кибор выдает код если одним из вариантов действия выбрать Закрыть окно... Свернуть окно - имеет числовой код 2, а не 0

так что же все-таки отслеживается в коде приведенном выше... сворачивание или закрытие окна?
(Добавление)
ну и попутно вопрос.. не совсем пойму почему исчезает второе НДО - четко понимаю что срабатывает таймер 5, хотя переменную перезаписываю по новому окну по которой идет отслеживание его видимости или нет... подскажите, пожалуйста, где туплю?

CODE:

Z:;
int pos_size_button0[2][4];
string text_button0[2];
int flag_button0[2];

pos_size_button0[0][0]=59; pos_size_button0[0][1]=230; pos_size_button0[0][2]=96; pos_size_button0[0][3]=20;
pos_size_button0[1][0]=163; pos_size_button0[1][1]=230; pos_size_button0[1][2]=97; pos_size_button0[1][3]=20;
text_button0[0]="Пуск"; text_button0[1]="Закрыть";

//////////

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

pos_size_edit0[0][0]=196; pos_size_edit0[0][1]=4; pos_size_edit0[0][2]=100; pos_size_edit0[0][3]=20;
text_edit0[0]="";

//////////

int pos_size_check0[8][4];
string text_check0[8];
int flag_check0[8];

pos_size_check0[0][0]=14; pos_size_check0[0][1]=129; pos_size_check0[0][2]=60; pos_size_check0[0][3]=20;
pos_size_check0[1][0]=80; pos_size_check0[1][1]=128; pos_size_check0[1][2]=60; pos_size_check0[1][3]=20;
pos_size_check0[2][0]=146; pos_size_check0[2][1]=127; pos_size_check0[2][2]=60; pos_size_check0[2][3]=20;
pos_size_check0[3][0]=145; pos_size_check0[3][1]=159; pos_size_check0[3][2]=83; pos_size_check0[3][3]=20;
pos_size_check0[4][0]=12; pos_size_check0[4][1]=74; pos_size_check0[4][2]=255; pos_size_check0[4][3]=20;
pos_size_check0[5][0]=12; pos_size_check0[5][1]=54; pos_size_check0[5][2]=228; pos_size_check0[5][3]=20;
pos_size_check0[6][0]=14; pos_size_check0[6][1]=196; pos_size_check0[6][2]=114; pos_size_check0[6][3]=20;
pos_size_check0[7][0]=145; pos_size_check0[7][1]=195; pos_size_check0[7][2]=150; pos_size_check0[7][3]=20;
text_check0[0]="F1"; text_check0[1]="F2"; text_check0[2]="F3"; text_check0[3]="Включить"; text_check0[4]="F4"; text_check0[5]="F5"; text_check0[6]="F6"; text_check0[7]="F7";
flag_check0[0]=0; flag_check0[1]=0; flag_check0[2]=0; flag_check0[3]=0; flag_check0[4]=0; flag_check0[5]=0; flag_check0[6]=0; flag_check0[7]=0;

//////////

int pos_size_combo0[1][4];
string text_combo0[1][3];
int strok_combo0[1];
int flag_combo0[1];

pos_size_combo0[0][0]=12; pos_size_combo0[0][1]=30; pos_size_combo0[0][2]=286; pos_size_combo0[0][3]=80;
strok_combo0[0]=3;
text_combo0[0][0]="1"; text_combo0[0][1]="2"; text_combo0[0][2]="3";
flag_combo0[0]=0;

//////////

int pos_size_static0[7][4];
string text_static0[7];

pos_size_static0[0][0]=13; pos_size_static0[0][1]=10; pos_size_static0[0][2]=100; pos_size_static0[0][3]=15;
pos_size_static0[1][0]=154; pos_size_static0[1][1]=10; pos_size_static0[1][2]=40; pos_size_static0[1][3]=15;
pos_size_static0[2][0]=13; pos_size_static0[2][1]=91; pos_size_static0[2][2]=283; pos_size_static0[2][3]=20;
pos_size_static0[3][0]=14; pos_size_static0[3][1]=109; pos_size_static0[3][2]=188; pos_size_static0[3][3]=20;
pos_size_static0[4][0]=16; pos_size_static0[4][1]=142; pos_size_static0[4][2]=281; pos_size_static0[4][3]=20;
pos_size_static0[5][0]=14; pos_size_static0[5][1]=162; pos_size_static0[5][2]=100; pos_size_static0[5][3]=20;
pos_size_static0[6][0]=15; pos_size_static0[6][1]=176; pos_size_static0[6][2]=281; pos_size_static0[6][3]=20;
text_static0[0]="Выберите пункт:"; text_static0[1]="Ваш ID:"; text_static0[2]="__________________________________________________________"; text_static0[3]="Выберите пункт:"; text_static0[4]="___________________________________________________________________________"; text_static0[5]="Выберите пункт"; text_static0[6]="__________________________________________________________________________";

//////////

createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0] |
EDIT, #pos_size_edit0[0][0], #text_edit0[0] |
CHECK, #pos_size_check0[0][0], #text_check0[0], #flag_check0[0] |
COMBO, #pos_size_combo0[0][0], #text_combo0[0][0], #strok_combo0[0], #flag_combo0[0] |
STATIC, #pos_size_static0[0][0], #text_static0[0]);
//////////

showdialog(0, "Dialog1", 40, 40, 314, 287, 0, 1);
//////////
int pos_size_button1[1][4];
string text_button1[1];
int flag_button1[1];

pos_size_button1[0][0]=3; pos_size_button1[0][1]=5; pos_size_button1[0][2]=123; pos_size_button1[0][3]=37;
text_button1[0]="Остановить";

//////////

createdialog(1, BUTTON, #pos_size_button1[0][0], #text_button1[0], #flag_button1[0]);
//////////


external(INT, "EnableWindow", "EnableWindow", "user32.dll");
external(INT, "IsWindowVisible", "IsWindowVisible", "User32.dll");
text_edit0[0]=individualcode();
EnableWindow(formatwi(window ("F4", "Button", -1)), 0);
EnableWindow(formatwi(window ("F5", "Button", -1)), 0);
EnableWindow(formatwi(window ("F6", "Button", -1)), 0);
win w=window("Dialog1");
enabletimer(5);
knopka();

m_KIB2:
sleep(1000);
goto m_KIB2;


CREATE_TIMER(5, 50)
{

if(IsWindowVisible(formatwi(w))==0)close();

}


function knopka()
{

loop()
{
if (flag_combo0[0]==1)
{
flag_check0[5]=0;
EnableWindow(formatwi(window ("F4", "Button", -1)), 1);
EnableWindow(formatwi(window ("F5", "Button", -1)), 0);
}
if (flag_combo0[0]==2)
{
flag_check0[4]=0;
EnableWindow(formatwi(window ("F4", "Button", -1)), 0);
EnableWindow(formatwi(window ("F5", "Button", -1)), 1);
}
if(flag_combo0[0]==0)
{
flag_check0[4]=0;
flag_check0[5]=0;
EnableWindow(formatwi(window ("F4", "Button", -1)), 0);
EnableWindow(formatwi(window ("F5", "Button", -1)), 0);
}
if(flag_check0[6]==1)
{
EnableWindow(formatwi(window ("F7", "Button", -1)), 1);
}
else
{
flag_check0[7]=0;
EnableWindow(formatwi(window ("F7", "Button", -1)), 0);
}
if(flag_button0[1]==1)
{
close();
}

if(flag_button0[0]==1)
{
disabletimer(5);
hidedialog(0);
showdialog(1, "Dialog2", 30, 30, 135, 77, 0, 1);
win w=window("Dialog2");
enabletimer(5);
enabletimer(2);
break;
}
sleep(10);
}


}


CREATE_TIMER(2, 50)
{

if(flag_button1[0]==1)
{
disabletimer(5);
destroydialog(0);
destroydialog(1);
goto Z;
}

}



(Добавление)
для понимания схемы... первично запускается основное окно, делаются настройки для скрипта который представлен в коде зацикленной паузой в 1 сек... когда выполняется пауза на экране висит второе МДО которое используется для остановки скрипта по требованию (таймер 2 отслеживающий нажатие кнопки на второй форме)... во время работы всего скрипта отслеживается нажатие на крестики закрытия в обоих НДО (цикл 5).
(Добавление)
это конечно в идеале... подозреваю что проблема в этой части кода

CODE:

hidedialog(0);
showdialog(1, "Dialog2", 30, 30, 135, 77, 0, 1);
win w=window("Dialog2"); //// вот тут
enabletimer(5);

(Добавление)
тоесть получается что if(IsWindowVisible(formatwi(w))==0)close(); в таймере по прежнему мониторит первое окно... как сделать так чтобы оно смотрело второе? пробовал диалоговые окна с одинаковым названием Dialog - не работает.
2. Kibor - 05 Сентября, 2018 - 10:34:58 - перейти к сообщению
Короче сделал опционально.
при 7 параметре showdialog равном 3 закрывает полностью программу.
3. Nathgul - 05 Сентября, 2018 - 10:36:45 - перейти к сообщению
тоесть с if(IsWindowVisible(formatwi(w))==0)close(); можно больше не заморачиваться?))
4. Kibor - 05 Сентября, 2018 - 10:38:40 - перейти к сообщению
Можно не заморачиваться.
5. Nathgul - 05 Сентября, 2018 - 21:07:33 - перейти к сообщению
спасибо огромное... очень удобно.

Powered by ExBB FM 1.0 Final