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

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

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

> Без описания
Nathgul
Отправлено: 03 Сентября, 2018 - 10:56:38
Post Id



Пользователь
Участник


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




задача проста... есть окно. после нажатия клавиши оно скрывается и скрипт ожидает нажатия клавиш. Если нажатие сделалось окно снова появляется ну и тд... закрыть кибор и собственно окно можно только крестиком в углу... с точки зрения логики скрип вроде правильный но ничерта не работает))

CODE:

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

int pos_size_button0[1][4];
string text_button0[1];
int flag_button0[1];

pos_size_button0[0][0]=74; pos_size_button0[0][1]=122; pos_size_button0[0][2]=100; pos_size_button0[0][3]=20;
text_button0[0]="Кнопка 0";

//////////

createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0]);
//////////

showdialog(0, "Диалог", 675, 300, 250, 300, 0, 1);
//////////
Z:sleep(500);
win w=window("Диалог");
enabletimer(0);


//нажимаем кнопку на форме и прячем диалог, тушим таймер и выходим из цикла переходя в след цикл
loop()
{
if(flag_button0[0]==1)
{
disabletimer(0);
hidedialog(0);
return;
}
sleep(10);
}

//цикл ожидания нажатия клавиш CTRL+A
loop()
{

//регистрируем нажатие и возвращаем скрытую форму, далее переход по метке
if (getkeystate(65)==1 && getkeystate(17)==1)
{
beep(3000, 500);
sleep(200);
beep(3000, 500);
sleep(200);
beep(3000, 500);
sleep(200);
showdialog(0);
goto Z;
}
sleep(10);
}


CREATE_TIMER(0, 1000)
{
if(IsWindowVisible(formatwi(w))==0)close();
}



(Отредактировано автором: 03 Сентября, 2018 - 10:57:56)

 
 Top
Zireael
Отправлено: 03 Сентября, 2018 - 11:24:48
Post Id



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


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




 Цитата:
return;

return предназначен для выхода из функции.
break для выхода из циклов.
Т. е. замените return на break.
CODE:
if(flag_button0[0]==1)
{
flag_button0[0]=0; // обнуляем флаг нажатия кнопки
disabletimer(0);
hidedialog(0);
break;
}

 Цитата:
showdialog(0);

Надо вызывать со всеми параметрами.
CODE:
showdialog(0, "Диалог", 675, 300, 250, 300, 0, 1 );
 
 Top
Nathgul
Отправлено: 03 Сентября, 2018 - 11:29:03
Post Id



Пользователь
Участник


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




 Zireael пишет:
Надо вызывать со всеми параметрами.

а как вернуть то окно которое скрылось. со всеми отмеченными чеками если таковые там есть и настройками? ведь при первичном запуске окошко можно сдвинуть и тд
 
 Top
Zireael
Отправлено: 03 Сентября, 2018 - 11:33:07
Post Id



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


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




 Цитата:
а как вернуть то окно которое скрылось

Перед тем как скрыть окно нужно записать параметры в переменные. Вызывать диалог потом уже с этими переменными.
 
 Top
Nathgul
Отправлено: 03 Сентября, 2018 - 11:34:57
Post Id



Пользователь
Участник


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




вообщем) срабатывает нажатие вылезает диалог и снова исчезает

CODE:

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

int pos_size_button0[1][4];
string text_button0[1];
int flag_button0[1];

pos_size_button0[0][0]=74; pos_size_button0[0][1]=122; pos_size_button0[0][2]=100; pos_size_button0[0][3]=20;
text_button0[0]="Кнопка 0";

//////////

createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0]);
//////////

showdialog(0, "Диалог", 675, 300, 250, 300, 0, 1);
//////////
Z:sleep(500);
win w=window("Диалог");
enabletimer(0);


//нажимаем кнопку на форме и прячем диалог, тушим таймер и выходим из цикла переходя в след цикл
loop()
{
if(flag_button0[0]==1)
{
disabletimer(0);
hidedialog(0);
break;
}
sleep(10);
}

//цикл ожидания нажатия клавиш CTRL+A
loop()
{

//регистрируем нажатие и возвращаем скрытую форму, далее переход по метке
if (getkeystate(65)==1 && getkeystate(17)==1)
{
beep(3000, 500);
sleep(200);
beep(3000, 500);
sleep(200);
beep(3000, 500);
sleep(200);
showdialog(0, "Диалог", 675, 300, 250, 300, 0, 1);
break;
}
sleep(10);
}
goto Z;


CREATE_TIMER(0, 1000)
{
if(IsWindowVisible(formatwi(w))==0)close();
}




(Добавление)
нажимаю снова ктрл+а снова три гудка появился и исчез... видимо воспринимает клавишу нажатой... дошло флаг кнопки сбросить нужно))
(Добавление)
ну и в завершение я так понимаю чтобы окно выходило на тех координатах где оно было скрыто мне нужно эти координаты запомнить - так?
(Добавление)
 Zireael пишет:
 Цитата:
а как вернуть то окно которое скрылось

Перед тем как скрыть окно нужно записать параметры в переменные. Вызывать диалог потом уже с этими переменными.



 Zireael пишет:
 Цитата:
если я его возьму и сверну в диалоге скомпиленого скрипта то что произойдет?

Свернуть окно и скрыть не одно и тоже.
Сворачивать диалог можно будет, это не влияет на видимость окна.
Соберите скрипт в exe и посмотрите. Вместо messagebox("Окно скрыто"Подмигивание; напишите close();
 Цитата:
есть ли в либах чтот типа IsWindowVisible только для закрытия?

Для закрытия чего? Кибор можно закрыть через close().



цитату взял из темы про закрытие кибора крестиком.

методом тыка проб и ошибок заметил следующее:
есть скрытие диалога посредством крестика в углу и есть скрытие посредством hidedialog

получается if(IsWindowVisible(formatwi(w))==0) никак не реагирует на окно срытое программно, в отличии от нажатия крестик... в чем разница?)
(Добавление)
понедельник день тяжелый... прошу прощения... не реагирует потому что таймер выключается принудительно по нажатию кнопки на форме))

(Отредактировано автором: 03 Сентября, 2018 - 11:49:05)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by