Что нового

Можно активировать окно, зная его Handle, Class, Style, ExStyle ?

Vampire

Новичок
Сообщения
11
Репутация
0
>>>> Window <<<<
[Title: (название меняется постоянно) ]
Class: QWidget
Position: 366, 62
Size: 687, 630
Style: 0x16CF0000
ExStyle: 0x00000104
Handle: 0x000207E8
При помощи этих данных можно показать окно?
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Да, только не понятно, в каком смысле показать? активировать или сделать видимым?

Код:
WinActivate('handle')
WinSetState('handle', '', @SW_SHOW)
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
Opt("WinTitleMatchMode", 4)
WinActivate('[Class:QWidget]')
 
Автор
V

Vampire

Новичок
Сообщения
11
Репутация
0
А кроме как по Class'у можно еще по какой информации вызывать?
(сделать активным, вывести на передний план)
по этим нельзя?:
Style: 0x16CF0000
ExStyle: 0x00000104
Handle: 0x000207E8
Просто - вдруг у меня несколько окон с одним и тем же классом...
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
Opt("WinTitleMatchMode", 4)
WinActivate('[handle:0x000207E8]')
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
sngr
крайне ненадежный способ, т.к. handle каждый раз меняется
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Разве это проблема? Запускаем искомое окно, WinGetHandle("[active]"), работаем дальше.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
sngr
само по себе нет, проблема указывать handle вручную через его буквенно-цифровое обазначение
 
Автор
V

Vampire

Новичок
Сообщения
11
Репутация
0
Суть в следующем :
Есть у меня окно (среди кучи остальных,) которое мне нужно переодически просматривать. А его title меняется через минуту.
Мне необходимо по горячей клавише выводить его наверх чтобы просмотреть его содержимое.
Так что я сделал по хендлеру - и, вроде, успешно работает.
Но хендлер скорее всего поменяется после перезагрузки (которая у меня крайне редко) так что подошло бы по классу окна тоже. В любом случае спасибо.
Я в Hot Keyboard поставил чтобы по комбинации клавиш запустился файл с autoit скриптом, который активирует окно...
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
#include'winapiex.au3'
Opt("WinTitleMatchMode", 4)
HotKeySet('{f4}','fu'); по нажатию ф4 активируется окно
$run=Run('notepad.exe'); запускаем искомую программу
Sleep(1000)
$ha=_WinAPI_EnumProcessWindows($run); это определяет handle
While 1
	Sleep(100)
WEnd
Func fu ()
	WinActivate($ha[1][0])
EndFunc

http://autoit-script.ru/index.php/topic,47.0.html
winapiex.au3 распакуй в папку с установленным autoit\include
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
То есть активировать окно, тыкнув в него мышом, и получить handle активного окна для дальнейшей с ним работы - это нереальная процедура, сложнейшая задача. Может активные окна это миф?
Про 1 раз. В условиях задачи не говорится об обратном, поэтому может и раз. Но я не это имел ввиду. Код с постоянным handle работает до перезапуск искомого окна - поэтому это временное решение.

1. Я так понимаю автору нужно это сделать программно.
2. Да и тему нужно закрывать, автор получил ответы на свои вопросы.
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Я понимая, что программно. Запускаем скрипт - пускаем окно - жмём hotkey, коий определяет handle - handle пишем в переменную - пользуемся.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
флейм почищен. все дальнейшие околотемные спекуляции будут наказываться.
Vampire
если вопрос себя исчерпал
[info border=#0000ff float=left]На форуме принято помечать тему решенной после получения ответа на свой вопрос!
Вверху или внизу темы нажмите на ссылку такого вида:
package_old.gif
Тема не решена
[/info]
 
Верх