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

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

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

> Без описания
mrPuh
Отправлено: 08 Августа, 2015 - 23:04:12
Post Id



Пользователь
Прохожий


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




Всем привет!
Как добавить в массив указатели всех окон, в названии которых есть определенное слово?
На форуме не нашел.
 
 Top
Kibor
Отправлено: 08 Августа, 2015 - 23:42:17
Post Id



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


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




никак.. поиск указателя возможен по множеству параметров, хоть по позиции кнопки в программе по координате X к примеру, но перебор нельзя. надо сделать...
 
 Top
Kibor
Отправлено: 10 Августа, 2015 - 09:01:27
Post Id



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


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




Обновил программу.
Добавил возможность подключать внешние DLL и юзать Api.

Теперь не проблема решать любые задачи, даже если язык Кибор не имеет нужной функции..
Для перебора окон используем FindWindowExA, для того что бы узнать имя окна по HWND используем GetWindowTextA. Их описание можно найти в интернете.
Находятся в user32.dll.

 Цитата:
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;
s: 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 s;
}

if (fopen ("c:\Окна.txt", "w")!=0)
{
for (int x=0; x<n; x++)
{
fwrite(all[x]);
fwrite(ENDL);
}
fclose();
}


start ("c:\Окна.txt");
 
 Top
mrPuh
Отправлено: 10 Августа, 2015 - 09:59:37
Post Id



Пользователь
Прохожий


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




Спасибо, Kibor!
Т.к. я не смог разобраться как в массив all[x] добавить указатели на окна, в имени которых есть определенное слово, к примеру "Блокнот".
Чтобы потом можно было использовать что-то типа:
CODE:
activate(all[x])

Подскажи, пожалуйста!
 
 Top
Kibor
Отправлено: 10 Августа, 2015 - 10:22:04
Post Id



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


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




Код не красивый. накидал просто..

CODE:
external(INT, "my_windows", "FindWindowExA", "user32.dll");
external(VOID, "my_getname", "GetWindowTextA", "user32.dll");

string hh="Блокнот";
char t[25];
strcpy(#t[0], hh);
int ss=size(#t[0]);
int si;
int y;
int x;
string all[500];
char h[512];
int adr=address(#h[0]);
int a=my_windows(0, 0, 0, 0);
win w[500];
int n=0;

s: if (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, 0, 0);
goto s;
}


for (x=0; x<n; x++)
{
activate(w[x]);
sleep(1000);
}


if (fopen ("c:\Окна.txt", "w")!=0)
{
for (x=0; x<n; x++)
{
fwrite(all[x]);
fwrite(ENDL);
}
fclose();
}


start ("c:\Окна.txt");


function pr()
{
for (int j=0; j<si-ss+1; j++)
{
y=j;
for (int b=0; b<ss; b++)
{
if (h[y]!=t[b])goto d;
y++;
}
return 1;
d:;
}
return -1;
}





 
 Top
mrPuh
Отправлено: 10 Августа, 2015 - 10:54:26
Post Id



Пользователь
Прохожий


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




Супер!!!! Круто
Это то что нужно!!!
Спасибо большое!
Еще вопрос, когда текст кода выделяю мышью - выделенная часть подсвечивается как положено. Но если выделять текст с помощью клавы - подсветки нет, почему?
 
 Top
Kibor
Отправлено: 10 Августа, 2015 - 10:58:50
Post Id



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


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




отключены.
 
 Top
mrPuh
Отправлено: 10 Августа, 2015 - 13:54:06
Post Id



Пользователь
Прохожий


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




Вопрос:
Для перемещения окна использую:
CODE:

all.width[x]=600;
all.height[x]=400;
all.left[x]=0;
all.top[x]=0;
movewindow(all[x]);

Окно перемещается в левый верхний угол, но исчезает название окна, хотя в справке по movewindow сказано:
 Цитата:
Изменяются только те элементы, параметры которых необходимо изменить.

Т.е. раз я не изменил all.name[x], то оно должно остаться прежним.. А оно почему-то становится пустым, почему?
 
 Top
Kibor
Отправлено: 10 Августа, 2015 - 14:59:04
Post Id



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


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




 mrPuh пишет:
Окно перемещается в левый верхний угол, но исчезает название окна, хотя в справке по movewindow сказано:
Цитата:
Изменяются только те элементы, параметры которых необходимо изменить.


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

в крайнем случае проверить moveclient
 
 Top
mrPuh
Отправлено: 10 Августа, 2015 - 15:52:30
Post Id



Пользователь
Прохожий


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




До перемещения (Отобразить)


После перемещения (Отобразить)


CODE:

external(INT, "my_windows", "FindWindowExA", "user32.dll");
external(VOID, "my_getname", "GetWindowTextA", "user32.dll");

string hh="Áëîêíîò";
char t[25];
strcpy(#t[0], hh);
int ss=size(#t[0]);
int si;
int y;
int x;
string all[500];
char h[512];
int adr=address(#h[0]);
int a=my_windows(0, 0, 0, 0);
win w[500];
int n=0;

s: if (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, 0, 0);
goto s;
}


for (x=0; x<n; x++)
{
//messagebox(w.left[x]);
w.width[x]=737;
w.height[x]=696;
w.left[x]=0;
w.top[x]=0;
movewindow(w[x]);

/*
if (fopen ("c:\Îêíà.txt", "w")!=0)
{
for (x=0; x<n; x++)
{
fwrite(all[x]);
fwrite(ENDL);
}
fclose();
}


start ("c:\Îêíà.txt");

*/
function pr()
{
for (int j=0; j<si-ss+1; j++)
{
y=j;
for (int b=0; b<ss; b++)
{
if (h[y]!=t[b])goto d;
y++;
}
return 1;
d:;
}
return -1;
}
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by