Kibor |
Отправлено: 10 Августа, 2015 - 09:01:27
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Обновил программу.
Добавил возможность подключать внешние 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"); |
|
|
Kibor |
Отправлено: 10 Августа, 2015 - 10:22:04
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Код не красивый. накидал просто..
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;
}
|
|
|
mrPuh |
Отправлено: 10 Августа, 2015 - 13:54:06
|
Прохожий
Покинул форум
Сообщений всего: 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], то оно должно остаться прежним.. А оно почему-то становится пустым, почему? |
|
|
mrPuh |
Отправлено: 10 Августа, 2015 - 15:52:30
|
Прохожий
Покинул форум
Сообщений всего: 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;
}
|
|
|
|