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

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

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

> Описание: как узнать что окно активно
DeLiberate
Отправлено: 15 Февраля, 2016 - 00:18:22
Post Id



Пользователь
Участник


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




Можно ли узнать, активно ли некоторое окно?
Например
Если известно окно и нужно проверить активно ли оно, то так:
CODE:

wind_notepad=win......//указатель на окно
int x; //Флаг
x=get_active_windows(wind_notepad); //Проверит активно ли окно "wind_notepad", если да - вернет 1
if (x==0);//если окно не активно
{
activate(wind_notepad); // активируем.
}

А если нужно узнать, какое окно активно из всех, то так:
CODE:

int active_wind; //указатель на окно в int
int x; //Флаг
x=get_active_window(active_wind); //Запишет в active_wind указатель на активное окно и вернет 1
if (x==1);//если окно активно
{
deactivate(active_wind); // деактивируем.
}

В общем, прошу помощи с написанием функции get_active_win
 
 Top
Kibor
Отправлено: 15 Февраля, 2016 - 09:33:45
Post Id



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


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




 DeLiberate пишет:
Можно ли узнать, активно ли некоторое окно?


CODE:
win w=window ("Безымянный — Блокнот", "Notepad", -1);

loop()
{
if (formatwi(getwindow())==formatwi(w))messagebox ("Активно окно блокнота......");
sleep(10);
}

(Добавление)
 DeLiberate пишет:
if (x==1);//если окно активно
{
deactivate(active_wind); // деактивируем.
}

а зачем узнавать что окно активно???
enabledeactive(w); само следит за тем активно или нет оно и деактивирует когда активно..
 Цитата:
win w=window ("Безымянный — Блокнот", "Notepad", -1);
enabledeactive(w);
loop()
{
sleep(10);
}
 
 Top
DeLiberate
Отправлено: 15 Февраля, 2016 - 13:11:20
Post Id



Пользователь
Участник


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




Ох как же я извиняюсь, я не знал, что функция
getwindow(); без аргументов получает указатель активного окна.
-------
Спрошу тут: с помощью external мы можем даже работать с direct3d'ом или, например подргрзить
Common Dialog Box Library (COMDLG32.DLL)
верно?
Спасибо за помощь Радость
 
 Top
Kibor
Отправлено: 15 Февраля, 2016 - 13:45:40
Post Id



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


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




можно..
CODE:
external(INT, "GetSaveFile", "GetSaveFileNameA", "COMDLG32.DLL");
GetSaveFile(/*параметры*/);


но.. надо знать параметры..

Заполнение структуры и вызов диалога сохранения файла
CODE:
external(VOID, "GetSaveFile", "GetSaveFileNameA", "COMDLG32.DLL");

char a[76];
for (int n=0; n<76; n++)a[n]=0;

writeaddress(76, address(#a[0]));
writeaddress(0, address(#a[4]));
writeaddress(0, address(#a[8]));
writeaddress(0, address(#a[12]));
writeaddress(0, address(#a[16]));
writeaddress(1634928, address(#a[20]));
writeaddress(1000, address(#a[24]));
writeaddress(0, address(#a[28]));
writeaddress(0, address(#a[32]));
writeaddress(0, address(#a[36]));
writeaddress(6148, address(#a[40]));

GetSaveFile(address(#a[0]));
 
 Top
Kibor
Отправлено: 15 Февраля, 2016 - 18:00:18
Post Id



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


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




Этот код вызовет стандартное окно на печать..

CODE:
external(INT, "Print", "PrintDlgA", "COMDLG32.DLL");
char a[30];
a[0]=66;
a[1]=0;
a[2]=0;
a[3]=0;

a[4]=0;
a[5]=0;
a[6]=0;
a[7]=0;

a[8]=0;
a[9]=0;
a[10]=0;
a[11]=0;

a[12]=0;
a[13]=0;
a[14]=0;
a[15]=0;

a[16]=0;
a[17]=1;
a[18]=4;
a[19]=0;

a[20]=1;
a[21]=0;

a[22]=0;
a[23]=0;

a[24]=0;
a[25]=0;

a[26]=1;
a[27]=0;

a[28]=0;
a[29]=0;

Print(address(#a[0]));


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


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




Powered by