Budni |
Отправлено: 13 Июня, 2019 - 13:27:56
|
Специалист
Покинул форум
Сообщений всего: 419
Дата рег-ции: Март 2018
Репутация: 2
|
Не могу логику понять помогите как сделать так
Цитата: Если галка стоит то проверяем условие if (sleepRand()==1) {textout(0, 500, 500, "Тест", 0);}
function sleepRand () {
sleep(rand(1000,5000));
return 1;
}
в этом примере
код (Отобразить)external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);
while(window ("Диалог")==0)sleep(10);
win w=window ("Диалог");
// создание checkbox
int check[3];
check[0]=CreateWindow(0, "BUTTON", "Галка0", 3+1342177280, 20, 10, 70, 20, formatwi(w), 0, 0, 0);
check[1]=CreateWindow(0, "BUTTON", "Галка1", 3+1342177280, 20, 30, 70, 20, formatwi(w), 0, 0, 0);
check[2]=CreateWindow(0, "BUTTON", "Галка2", 3+1342177280, 20, 50, 70, 20, formatwi(w), 0, 0, 0);
int flag_check[3]={0,1,0}; // флаги для checkbox, 0-не выбрана, 1-выбрана
if(sizearray(check)!=sizearray(flag_check)){messagebox("Размеры массива check и flag_check не совпадают"); goto end;}
// ставим галки, для которых флаг = 1
for(int i=0; i<sizearray(flag_check); i++)
{
if(flag_check[i])
{
sendmessage(WM_LBUTTONDOWN, 0, 0, formatiw(check[i]));
sendmessage(WM_LBUTTONUP, 0, 0, formatiw(check[i]));
flag_check[i]=1;
}
}
textbkcolor(255, 65280);
loop()
{
textout(0, 220, 135, format(flag_check[0]), 1);
textout(1, 220, 155, format(flag_check[1]), 1);
textout(2, 220, 175, format(flag_check[2]), 1);
sleep(10);
}
end:;
function getmessage(0, WM_COMMAND)
{
for(int i=0; i<sizearray(check); i++) // цикл для всех галок
{
if (message.lparam==check[i])
{
if(flag_check[i])flag_check[i]=0; // если галка уже была выбрана, то флаг = 0
else flag_check[i]=1; // иначе флаг = 1
break;
}
}
}
(Отредактировано автором: 13 Июня, 2019 - 13:35:48) |
|
|
Zireael |
Отправлено: 13 Июня, 2019 - 13:48:59
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
code (Отобразить)CODE:#define WS_CHILD 1073741824
#define WS_VISIBLE 268435456
#define BS_AUTOCHECKBOX 3
#define BM_GETSTATE 242
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
int check, state, flag_check=0;
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);
loop()
{
if (flag_check==1) // если галка стоит
{
textbkcolor(255, 65280);
textout(0, 200, 300, "Галка выбрана", 1);
}
else
{
textbkcolor(65280, 255);
textout(0, 200, 300, "Галка не выбрана", 1);
}
sleep(10);
}
function getmessage(0, WM_CREATE)
{
check=CreateWindow(0, "BUTTON", "Галка", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 20, 10, 70, 20, gethwnd(0), 0, 0, 0);
}
function getmessage(0, WM_COMMAND)
{
if(message.lparam==check) // если нажата галка
{
state=sendmessage(BM_GETSTATE, 0, 0 , formatiw(check)); // получаем статус
if(state==1 || state==9)flag_check=1; // если выбрана (1) или выбрана и в фокусе (1 + 8)
else flag_check=0;
}
} |
|
|
007wan |
Отправлено: 13 Июня, 2019 - 14:07:14
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Цитата: можно пж код,где ишет ВСЕ изображения данного типа с разбежностью.
CODE:int Image[10][7]; // массив для картинки 10*7
loadimage (#Image[0][0], "D:\Kibor2\Image_0.bmp"); //загрузить картинку
int coord[4]={0, 0, 1902, 1080} // область поиска
int r=20; // разбежность
int accuracy=100; // точность поиска
int posX[99], posY[99]; // массивы для координат найденных картинок
int count=findimage(sizearray(posX), #Image[0][0], -1, #posX[0], #posY[0], coord[0], coord[1], coord[2], coord[3],r,r,r,r,r,r, accuracy, 1, -1);
messagebox("Найдено картинок: "+format(count));
for(int i=0; i<count; i++)
{
mousemove(coord[0]+posX[i], coord[1]+posY[i]);
textout(i, coord[0]+posX[i], coord[1]+posY[i], format(i), 1);
sleep(500);
}
sleep(1000);
Точность поиска сильно не уменьшать, будет долго искать если область поиска большая. область поиска 1000, 730 |
|
|
Budni |
Отправлено: 14 Июня, 2019 - 18:09:35
|
Специалист
Покинул форум
Сообщений всего: 419
Дата рег-ции: Март 2018
Репутация: 2
|
как зарегистрировать 3 горячии клавиши?
CODE:RegisterHotKey(gethwnd(2), 333, MOD_CONTROL, 51); // Ctrl + 3
(Добавление)
всё разобрался нужно
#define MOD_SHIFT 4 добавить
CODE:RegisterHotKey(gethwnd(2), 333, MOD_CONTROL+MOD_SHIFT, 51); (Отредактировано автором: 14 Июня, 2019 - 18:16:07) |
|
|
lomanosov |
Отправлено: 14 Июня, 2019 - 21:31:48
|
Прохожий
Покинул форум
Сообщений всего: 2
Дата рег-ции: Июнь 2019
Репутация: 0
|
Kibor пишет: lomanosov пишет: подскажите может ли киборг сделать скрин и найти похожий скрин файл в паке 4000 шт
по размеру файла
Может.
Делаем скрин и на нем ищем все эти 4000 файлов по очереди загружая из через loadimage
Только вот "похожий" размытое понятие
Думаю как лучше сделать разгадывание капчи при том что капч разгаданных 4000 шт
скин капчи сравнивать по размеру физическому с теми что есть в паке или через ABBYY FineReade получая txt файл
нужно чтобы киборг смотрел в файл и понимал что делать при данном тексте всё просто если значений 2-3 но их 4000
пример txt файла:
1 erityrety - нажимать a
2 ghfdjgh - нажимать b
3 dfghfjdhgj - нажимать с
4000... |
|
|
Zireael |
Отправлено: 15 Июня, 2019 - 02:11:47
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: пример txt файла:
1 erityrety - нажимать a
2 ghfdjgh - нажимать b
3 dfghfjdhgj - нажимать с
Прочитать файл и найти в нём нужную строку (Отобразить)CODE:#define GENERIC_READ -2147483648
#define OPEN_EXISTING 3
#define FILE_ATTRIBUTE_NORMAL 128
external(INT, "CreateFile", "CreateFileA", "Kernel32.dll");
external(INT, "CloseHandle", "CloseHandle", "Kernel32.dll");
external(INT, "ReadFile", "ReadFile", "Kernel32.dll");
string path_in="C:\test.txt"; // путь к txt файлу
string s="ghfdjgh"; // это искать
char c[9999999];
int count_byte;
string text;
int hFile=CreateFile(path_in, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); // открыть файл
if(hFile>0) // если открылся
{
if(ReadFile(hFile, address(#c[0]), sizearray(c), address(#count_byte), 0)) // прочитать файл
{
CloseHandle(hFile);
//messagebox("Прочитано байт: "+format(count_byte));
messagebox("Содержимое файла: "+formatic(13)+formatic(10)+format(#c[0], count_byte)); // может не показать если файл большой
if(regexsearch(1, #text, format(#c[0], count_byte), s+" - нажимать [^ \r\n]")) // поиск нужного текста, тот что в переменной s
{
messagebox("Найденная строка: "+formatic(13)+formatic(10)+text);
if(regexsearch(1, #text, text, "(?<=нажимать )[^ \r\n]+")) // поиск что надо нажать
{
messagebox("Нажать: "+text);
}
else messagebox("Не найдено что нажать");
}
else messagebox("Текст "+s+" не найден");
}
else messagebox("Файл не открылся");
}
else messagebox("Файл не найден"); |
|
|
Zireael |
Отправлено: 15 Июня, 2019 - 21:10:14
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Так по-короче, что-то забыл про бинарный режим.
code (Отобразить)CODE:string path_in="C:\test.txt"; // путь к txt файлу
string s="ghfdjgh"; // это искать
char c[9999999];
int count_byte;
string text;
if(fopen(path_in, "rb"))
{
count_byte=freadb(#c[0], sizearray(c))-1;
messagebox("Прочитано байт: "+format(count_byte));
messagebox("Содержимое файла: "+formatic(13)+formatic(10)+format(#c[0], count_byte)); // может не показать если файл большой
if(regexsearch(1, #text, format(#c[0], count_byte), s+" - нажимать [^ \r\n]")) // поиск нужного текста, тот что в переменной s
{
messagebox("Найденная строка: "+formatic(13)+formatic(10)+text);
if(regexsearch(1, #text, text, "(?<=нажимать )[^ \r\n]+")) // поиск что надо нажать
{
messagebox("Нажать: "+text);
}
else messagebox("Не найдено что нажать");
}
else messagebox("Текст "+s+" не найден");
}
else messagebox("Файл не найден"); |
|
|
|