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

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

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

> Без описания
Fintil
Отправлено: 23 Апреля, 2023 - 18:14:24
Post Id



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


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




Привет. Использую данный код для ограниченного запуска exe.

Код (Отобразить)


Я не умею работать с немодальными диалоговыми окнами и поэтому просто убираю
CODE:
createdialog(0);
showdialog(0, "Диалог", 300, 300, 300, 300, 4, 1);
loop()sleep(10);

И вставляю свой код. Например
CODE:
int eCol_Kib, eX_Kib, eY_Kib;
getdisplay(eCol_Kib, eX_Kib, eY_Kib);

KIB_2: pause(formatsn(getcontrol(EDIT_0))*1000);
beep(500, 500);
goto KIB_2;
CREATE_INTERFACE
{
DIALOG "Название окна" 200 100 //РазмерX РазмерY
STATIC_0 "Beep раз в " 10 10 90 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_0 "5" 75 8 65 18 //ПозицияX ПозицияY РазмерX РазмерY
STATIC_1 " секунд" 140 10 90 18 //ПозицияX ПозицияY РазмерX РазмерY
BUTTONSCRIPT "Запустить" 10 40 174 25 //ПозицияX ПозицияY РазмерX РазмерY
//Добавление контролов управления ......

}


Запускаю, пользуюсь. Останавливаю скрипт ctrl+shift+z, в диалоговом окне нажимаю еще раз "Запустить" и получаю сообщение "Уже запущено". Приходится перезапускать exe заново. Как можно поправить?
 
 Top
Zireael
Отправлено: 26 Апреля, 2023 - 21:26:09
Post Id



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


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




 Цитата:
Как можно поправить?

Нужно удалять мьютекс при остановке скрипта.
CODE:
#define MUTEX_ALL_ACCESS 0x1F0001
external(INT, "IsUserAnAdmin", "IsUserAnAdmin", "Shell32.dll");
external(INT, "CreateMutex", "CreateMutexA", "Kernel32.dll");
external(INT, "OpenMutex", "OpenMutexA", "Kernel32.dll");
external(INT, "ReleaseMutex", "ReleaseMutex", "Kernel32.dll");
external(INT, "CloseHandle", "CloseHandle", "Kernel32.dll");

if(IsUserAnAdmin()==0)
{
messagebox("Только от имени Администратора");
close();
}

options ("stop","O");//Меняет стандатрную остановку на другую букву.
int my_mutex=Mutex("Global\MyMutex123"); // имя мьютекса (любое) после Global\


enabletimer(0);
KIB_2: _pause(formatsn(getcontrol(EDIT_0))*1000);
beep(500, 500);
goto KIB_2;
EndScript:;

CREATE_INTERFACE
{
DIALOG "Название окна" 200 100 //РазмерX РазмерY
STATIC_0 "Beep раз в " 10 10 90 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_0 "5" 75 8 65 18 //ПозицияX ПозицияY РазмерX РазмерY
STATIC_1 " секунд" 140 10 90 18 //ПозицияX ПозицияY РазмерX РазмерY
BUTTONSCRIPT "Запустить" 10 40 174 25 //ПозицияX ПозицияY РазмерX РазмерY
//Добавление контролов управления ......
}

function _pause(int t){looptime(t)sleep(10);}

function Mutex(string s)
{
if(OpenMutex(MUTEX_ALL_ACCESS, 0, s))
{
messagebox("Уже запущено");
close(); // если мьютекс существует, закрыть программу
}
return CreateMutex(0, 1, s); // иначе создать мьютекс
}


CREATE_TIMER(0, 50)
{
if (getkeystate(17) && getkeystate(16) && getkeystate(90)) // если нажаты Ctrl+Shift+Z
{
// удаление мьютекса
ReleaseMutex(my_mutex);
CloseHandle(my_mutex);
goto EndScript;
}
}
 
 Top
Fintil
Отправлено: 27 Апреля, 2023 - 13:07:46
Post Id



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


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




Zireael в который раз, большое спасибо!

(Отредактировано автором: 27 Апреля, 2023 - 13:08:35)

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


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




Powered by