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

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

1. Nathgul - 04 Сентября, 2018 - 03:35:38 - перейти к сообщению
CODE:

CREATE_TIMER(2, 50)
{

if (getkeystate(18)==1 && getkeystate(16)==1 && getkeystate(13)==1)
{
beep(3000, 500);
sleep(200);
beep(3000, 500);
sleep(200);
beep(3000, 500);
sleep(200);
destroydialog(0);
goto Z;
}



на протяжении работы скрипта отслеживается нажатие alt+shift+enter... скрипт выполняется , все работает и никак иначе чем через таймер отслеживать нет возможности. так вот периодически наблюдается срабатывание при отсутствии физического нажатия этих клавиш. программно данная комбинация скриптом не прожимается. подскажите возможное решение? может дело в антикликере? заранее спасибо
(Добавление)
срабатывает как на ноуте так и на обычном пк, клавиатура и мышь usb
2. Kibor - 04 Сентября, 2018 - 03:39:59 - перейти к сообщению
Данная проблема была устранена.
Киньте полный код (обрезанный, оставив только работающую запускаемую часть), где такая проблема есть.
3. Nathgul - 06 Сентября, 2018 - 08:03:41 - перейти к сообщению
Владимир, доброго дня. переделал отключение сочетанием клавиш на отключением нажатием кнопки на доп форме... если убираю основной код и оставляю просто петлю пустую после включения второго диалогового окна, форма работает корректно... таймер фиксирует нажатие кнопки и все ок... заменил кольцо на основной код и таймер начал свое снова - срабатывает нажатие без как такового физического нажатия мышкой на кнопку...

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, "Dialog", 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");
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);

knopka();

m_KIB2: /// петля в виде зацикленных друг на друга блоках кода
sleep(1000);
goto m_KIB2;



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)
{

hidedialog(0);
showdialog(1, "Dialog", 30, 30, 135, 77, 0, 1);
enabletimer(2);
break;
}
sleep(10);
}


}


CREATE_TIMER(2, 50)
{

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

}





в таком виде работает без сбоев... стоит заменить петлю на скрипт основной... начинаются срабатывания таймера 2... как в собранном файле так и при запуске из кибора

че может быть?
(Добавление)
попробую проверить основной код от выхода из функции "knopka" до конца скрипта... хотя сомневаюсь что там может быть что-то нажимающее кнопку или вызывающее таймер2... вызов таймера только в 1 месте... и оно в коде выше есть
4. Zireael - 06 Сентября, 2018 - 17:48:28 - перейти к сообщению
 Цитата:
начинаются срабатывания таймера 2

А почему не должен срабатывать, таймер нигде не выключается.
 Цитата:
без как такового физического нажатия мышкой на кнопку...

Флаг нажатия кнопки надо обнулять.
 Цитата:
if(flag_button0[0]==1)
{
flag_button0[0]=0;
hidedialog(0);
showdialog(1, "Dialog", 30, 30, 135, 77, 0, 1 );
enabletimer(2);
break;
}
5. Nathgul - 06 Сентября, 2018 - 21:54:20 - перейти к сообщению
блин ток вчитался... ты пишешь что флаг обнулять надо... только кнопка0(0) нажимается единожды и мы выходим из цикла loop навсегда... дальше форма1 не используется, начинает использоваться форма 2 с одной единственной кнопкой проверка нажатия которой заложена в таймере2 и который работает на протяжении работы всего скрипта... так вот как раз иногда по необьяснимым причинам условие кнопка1(0)==1 и срабатывает, только кнопка при этом физически не нажата на форме, такая же бадяга была и с сочетанием клавиш любым.

я думаю может быть так можно проблему решить

CODE:

if(flag_button0[0]==1)
{

hidedialog(0);
showdialog(1, "Dialog", 30, 30, 135, 77, 0, 1);
flag_button1[0]=1; /// обнулить кнопку со второй формы перед запуском таймера
enabletimer(2);
break;
}
sleep(10);
}


обнуление в блоке таймера нет конечно, иначе кнопка всегда будет в флаге 0
6. Zireael - 07 Сентября, 2018 - 05:54:13 - перейти к сообщению
 Цитата:
в таком виде работает без сбоев

Выкладывайте код, в котором не работает.

Powered by ExBB FM 1.0 Final