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

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

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

> Без описания
007wan
Отправлено: 26 Ноября, 2017 - 18:31:24
Post Id



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


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




Есть код
CODE:
external(INT, "my_windows", "FindWindowExA", "user32.dll");
external(VOID, "my_getname", "GetWindowTextA", "user32.dll");
string all[2000];
char h[512];
int adr=address(#h[0]);
int a=my_windows(0, 0, 0, 0);
int n=0;
a:
if (a!=0)
{
h[0]=formatic(0);
my_getname(a, adr, 512);
all[n]=format(#h[0]);
a=my_windows(0, a, 0, 0);
n++;
goto a;
}
if (fopen ("C:\Users\Home\Desktop\Новый текстовый документ.txt", "w")!=0)
{
for (int x=0; x<n; x++)
{
fwrite(all[x]);
fwrite(ENDL);
}
fclose();
}
start ("C:\Users\Home\Desktop\Новый текстовый документ.txt");

Или есть лучше предложения по коду?
Короче нужно сделать так, что бы ЭТОТ код искал окно кибора или запущенный код в самой программе, но я там смотрел и нашел это:
CODE:
Кибор [C:\Users\Home\Desktop\МОЁ\KIBOR_BOT\Чат.txt]
, дело в том, что эта часть кода меняется:
CODE:
[C:\Users\Home\Desktop\МОЁ\KIBOR_BOT\Чат.txt]
Т.е путь, но как сделать , что бы призапуске возвращался этот путь программы и вписывался туда, а потом если нашел более 1 таких строчек
CODE:
[C:\Users\Home\Desktop\МОЁ\KIBOR_BOT\Чат.txt]
, то закрывал одну из программ, но закрывал так, что бы не обе закрылись, а только одна из них
 
 Top
Zireael
Отправлено: 26 Ноября, 2017 - 18:45:42
Post Id



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


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




 Цитата:
Как сделать запрет запуска 2-х программ на одном компьютере?

Ищем указатель на окно, если найден ничего не делаем (значит программа уже запущена), если не найден запускаем программу.
 
 Top
007wan
Отправлено: 27 Ноября, 2017 - 15:44:46
Post Id



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


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




 Zireael пишет:
 Цитата:
Как сделать запрет запуска 2-х программ на одном компьютере?

Ищем указатель на окно, если найден ничего не делаем (значит программа уже запущена), если не найден запускаем программу.


Ну да, я тоже так считал сначало
(Добавление)
Но как он закроет лишнюю? указатели одинаковые, как и программы, получается он закроет обе
 
 Top
Zireael
Отправлено: 28 Ноября, 2017 - 03:41:16
Post Id



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


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




Собрать в exe. Если запустить вторую копию этого exe, то выдаст сообщение и закроет вторую копию.
CODE:
external(INT, "my_windows", "FindWindowExA", "user32.dll");
external(VOID, "my_getname", "GetWindowTextA", "user32.dll");
external(VOID, "my_exit", "ExitProcess", "kernel32.dll");

string hh="Kibor";
string class="2049725492-21869";
char t[25];
strcpy(#t[0], hh);
int ss=size(#t[0]), si, y, x;
string all[500];
char h[512];
int adr=address(#h[0]);
int a=my_windows(0, 0, class, 0);
win w[500];
int n=0;

while (a!=0)
{
h[0]=formatic(0);
my_getname(a, adr, 512);
si=size(#h[0]);
if (pr()==-1) goto nn;
all[n]=format(#h[0]);
w[n]=formatiw(a);
n++;
nn: a=my_windows(0, a, class, 0);
}

if (n > 1) // если запущено больше 1 программы
{
messagebox("Kibor уже открыт, этот будет закрыт"); // можно убрать
my_exit(0); // закрыть программу
}

loop() // можно убрать
{
textout(0, 500, 500, "Kibor", 1);
sleep(100);
}
 
 Top
Kibor
Отправлено: 28 Ноября, 2017 - 08:10:37
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8218
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




У пользователя другого класс может отличаться..
 
 Top
007wan
Отправлено: 28 Ноября, 2017 - 14:27:47
Post Id



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


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




 Kibor пишет:
У пользователя другого класс может отличаться..

Как исправить? может другая идея есть?
(Добавление)
 Kibor пишет:
У пользователя другого класс может отличаться..

Можно сделать указатель на окно, он выведит класс и впишет его туда
 
 Top
Kibor
Отправлено: 28 Ноября, 2017 - 16:13:46
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8218
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Немного переделал что б не вводить класс.
Он определяется по указателю на свою программу.
win wc=getwindow();
wc.class


CODE:
win wc=getwindow();
external(INT, "my_windows", "FindWindowExA", "user32.dll");
external(VOID, "my_getname", "GetWindowTextA", "user32.dll");
external(VOID, "my_exit", "ExitProcess", "kernel32.dll");


int si, y, x;
string all[500];
char h[512];
int adr=address(#h[0]);
int a=my_windows(0, 0, wc.class, 0);
win w[500];
int n=0;

while (a!=0)
{
h[0]=formatic(0);
my_getname(a, adr, 512);
si=size(#h[0]);
if (pr()==-1) goto nn;
all[n]=format(#h[0]);
w[n]=formatiw(a);
n++;
nn: a=my_windows(0, a, wc.class, 0);
}

if (n > 1) // если запущено больше 1 программы
{
messagebox("Kibor уже открыт, этот будет закрыт"); // можно убрать
my_exit(0); // закрыть программу
}

loop() // можно убрать
{
textout(0, 500, 500, "Kibor", 1);
sleep(100);
}
 
 Top
007wan
Отправлено: 28 Ноября, 2017 - 16:45:02
Post Id



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


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




Kibor , Спасибо, но как сделать, что бы этот код:
CODE:
win wc=getwindow();
external(INT, "my_windows", "FindWindowExA", "user32.dll");
external(VOID, "my_getname", "GetWindowTextA", "user32.dll");
external(VOID, "my_exit", "ExitProcess", "kernel32.dll");
int si, y, x;
string all[500];
char h[512];
int adr=address(#h[0]);
int a=my_windows(0, 0, wc.class, 0);
win w[500];
int n=0;
while (a!=0)
{
h[0]=formatic(0);
my_getname(a, adr, 512);
si=size(#h[0]);
if (pr()==-1) goto nn;
all[n]=format(#h[0]);
w[n]=formatiw(a);
n++;
nn: a=my_windows(0, a, wc.class, 0);
}
if (n > 1) // если запущено больше 1 программы
{
messagebox("Kibor уже открыт, этот будет закрыт"); // можно убрать
my_exit(0); // закрыть программу
}
loop() // можно убрать
{
textout(0, 500, 500, "Kibor", 1);
sleep(100);
}

Как его разместить в loop' е или вообще куда его запихать, а то я сменил название переменных, а программа вылетает, вместо while я ставил if, потому что уже есть цикл луп и метку другое
 
 Top
Kibor
Отправлено: 28 Ноября, 2017 - 17:24:17
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8218
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




CODE:
// пишем вверху в самом
external(INT, "my_windows", "FindWindowExA", "user32.dll");
external(VOID, "my_getname", "GetWindowTextA", "user32.dll");
external(VOID, "my_exit", "ExitProcess", "kernel32.dll");
win wc;
проверить_запущена_ли_программа();


//тут вся программа













function проверить_запущена_ли_программа()
{
wc=getwindow();
int si, y, x;
string all[500];
char h[512];
int adr=address(#h[0]);
int a=my_windows(0, 0, wc.class, 0);
win w[500];
int n=0;

while (a!=0)
{
h[0]=formatic(0);
my_getname(a, adr, 512);
si=size(#h[0]);
if (pr()==-1) goto nn;
all[n]=format(#h[0]);
w[n]=formatiw(a);
n++;
nn: a=my_windows(0, a, wc.class, 0);
}

if (n > 1) // если запущено больше 1 программы
{
messagebox("Kibor уже открыт, этот будет закрыт"); // можно убрать
my_exit(0); // закрыть программу
}

loop() // можно убрать
{
textout(0, 500, 500, "Kibor", 1);
sleep(100);
}
}
 
 Top
007wan
Отправлено: 28 Ноября, 2017 - 18:14:12
Post Id



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


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




Kibor , Спс, сейчас проверю)
(Добавление)
Kibor , вылетает...(я поменял название переменных, т.к уже некоторые из них используются)
Идет объявление кучи переменных, потом инитдиалог, вывод диалога, потом
CODE:
external(INT, "my_windows", "FindWindowExA", "user32.dll");
external(VOID, "my_getname", "GetWindowTextA", "user32.dll");
external(VOID, "my_exit", "ExitProcess", "kernel32.dll");
Запрет_на_запуск();

потом куча функций и условий...а потом...
CODE:
function Запрет_на_запуск()
{
wc=getwindow();
int sij, yj, xj;
string all[500];
char h[512];
int adr=address(#h[0]);
int av=my_windows(0, 0, wc.class, 0);
win w[500];
int nfg=0;
while (av!=0)
{
h[0]=formatic(0);
my_getname(av, adr, 512);
sij=size(#h[0]);
if (pr()==-1) goto ngn;
all[nfg]=format(#h[0]);
w[nfg]=formatiw(av);
nfg++;
ngn: a=my_windows(0, av, wc.class, 0);
}
if (nfg > 1) // если запущено больше 1 программы
{
messagebox("Kibor уже открыт, этот будет закрыт"); // можно убрать
my_exit(0); // закрыть программу
}
loop() // можно убрать
{
textout(0, 500, 500, "Kibor", 1);
sleep(100);
}
}

(Добавление)
Нашел ошибку в строчке:
CODE:
a=my_windows(0, av, wc.class, 0);
Все работает, но он при запуске сразу же выполняет условие:
CODE:
if (nfg > 1) // если запущено больше 1 программы
{
messagebox("Kibor уже открыт, этот будет закрыт"); // можно убрать
my_exit(0); // закрыть программу
}

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


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




Powered by