Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Как узнать свернуто ли окно

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

1. Dantes3000 - 04 Сентября, 2018 - 12:00:38 - перейти к сообщению
Как узнать минимизировано ли(свёрнуто) окно?
IsIconic всегда 0 возвращает, IsWindowVisible всегда 1


Спкойоер (Отобразить)
2. Kibor - 04 Сентября, 2018 - 12:34:30 - перейти к сообщению
 Dantes3000 пишет:
win w_KIB;
int ex_KIB, ey_KIB, sum_KIB, x_KIB, y_KIB;

start_();


external(INT, "IsIconic", "IsIconic", "User32.dll");
external(INT, "IsWindowVisible", "IsWindowVisible", "User32.dll");


loop()
{
start_();

textout(0,0,0, format(IsIconic(formatwi(w_KIB))), 0);
textout(1,0,15, format(IsWindowVisible(formatwi(w_KIB))), 0);


}

function start_()
{
pause(100);
int x, y;
getmouse(x, y);
w_KIB=getwindow(0, x, y);
ex_KIB=w_KIB.widthclient; ey_KIB=w_KIB.heightclient;
}


Функция IsIconic возвращает это.
Но алгоритм не верный.
В цикле функция start_();, в которой идет заново получение указателя на окно под мышкой. То есть где мышь, там и окно определяется. И указатель указывает постоянно на активное развернутое окно под мышкой.
Надо start_(); вынести за цикл, тогда будет указывать на окно которое при запуске стояло. И будет его статус определять.
CODE:
win w_KIB;
int ex_KIB, ey_KIB, sum_KIB, x_KIB, y_KIB;

start_();


external(INT, "IsIconic", "IsIconic", "User32.dll");

start_();

loop()
{

textout(0,0,0, format(IsIconic(formatwi(w_KIB))), 0);


}

function start_()
{
pause(100);
int x, y;
getmouse(x, y);
w_KIB=getwindow(0, x, y);
ex_KIB=w_KIB.widthclient; ey_KIB=w_KIB.heightclient;
}
3. Dantes3000 - 04 Сентября, 2018 - 12:39:16 - перейти к сообщению
Да я как обычно тупанул. Пока на форум не напишу - не догадаюсь. Я на варспе тестировал по прямой привязке к окну....а этих окна у меня 2 открыто.
(Добавление)
А можно как-то без подключения внешней функции развернуть окно?

CODE:
win w_KIB;
int ex_KIB, ey_KIB, sum_KIB, x_KIB, y_KIB;

start_();


external(INT, "IsIconic", "IsIconic", "User32.dll");
external(INT, "ShowWindow", "ShowWindow", "User32.dll");


start_();


loop() if(IsIconic(formatwi(w_KIB))!=0) ShowWindow(formatwi(w_KIB), 1);







function start_()
{
pause(100);
int x, y;
getmouse(x, y);
w_KIB=getwindow(0, x, y);
ex_KIB=w_KIB.widthclient; ey_KIB=w_KIB.heightclient;
}
4. Kibor - 04 Сентября, 2018 - 13:14:33 - перейти к сообщению
 Dantes3000 пишет:
А можно как-то без подключения внешней функции развернуть окно?

?
http://kibor-bot.com/forum/topic...84398#1487084398
и ниже пост разве не то?.
5. Dantes3000 - 04 Сентября, 2018 - 13:34:32 - перейти к сообщению
Kibor , это развернуть на весь экран. А я имею ввиду развернуть из свёрнутого положения.
6. Kibor - 04 Сентября, 2018 - 13:39:38 - перейти к сообщению
Ну надо найти значения нужной константы в интернете и подставить.
7. Zireael - 04 Сентября, 2018 - 17:42:21 - перейти к сообщению
 Цитата:
развернуть из свёрнутого положения.

https://docs.microsoft.com/ru-ru...rc/wm-syscommand
 Цитата:
SC_RESTORE
0xF120

Переводим из hex в dec, f120 = 61728
CODE:
win w=window (-1, "Notepad", -1); // найти блокнот
sendmessage(WM_SYSCOMMAND, 61728, 0, w); // восстановить окно
8. Dantes3000 - 05 Сентября, 2018 - 08:18:49 - перейти к сообщению
Zireael , спасибо. Так и думал. Находил эти значения и даже понял, что это то что надо, но чёт не допёр до конца.
Было бы неплохо эту инфу добавить в тему про post/sendmessage

Powered by ExBB FM 1.0 Final