Что нового

[Окна, Диалоги] Не могу поймать окно QWidget

deemytch

Новичок
Сообщения
3
Репутация
0
Здравствуйте все

Не могу поймать окошко класса QWidget. Знаю, что написано на QT.
Элементы (кнопки, меню) не отслеживаются вообще.
Я пытаюсь после запуска программы послать (Send) туда последовательность нажатий на клавиши (настройки сделать).

Варианты действий:
1. Запускаю программу (Run), получаю pid. Пытаюсь получить hwnd. Вылазит окно с ^Error и всё, и скрипт обламывается.

2. Run, Sleep(100), WinWaitActive - скрипт зависает навсегда, хотя таймаут проходит, но ничего не происходит. Программа запущена, и реагирует на нажатия с клавиатуры. Без WinWaitActive - нажатия передаются в нижележащее окно (TotalCommander или Explorer), быстро отрубаю скрипт руками.

3. WinMinimizeAll, затем Run, Sleep, Send. Окно открывается, затем сворачивается, нажатия Send передаются куда угодно.

Кто виноват понятно, но что делать?

Если кто знает, помогите.
 

timsky

Осваивающий
Сообщения
93
Репутация
28
Au3Info элементы отслеживает?
 
V

VitAl2013

Гость
Аналогично задаюсь тем же вопросом тут: http://autoit-script.ru/index.php?topic=1177.0

Слышал такую байку, что в Линуксе контролы это не контролы, а как бы вся программа это один объект, картинка. Обработчик обрабатывает не скажем клик по элементу, а клик по заданым координатам. Потом отдаёт эти энролы обработчику, тот передаёт их функциям. И никому наружу ничего не выдаёт. Так что без примочки (встречных шагов) от самого Qt или MiniGW ничего не получится.

Send активирует только какойто стандартный windows алгоритм. Для иноОСцев надо что-то своё (их).
А вообще былобы здорово соединить графику Qt, кросплатформу Qt и язык autoit... :robot:
 
Автор
deemytch

deemytch

Новичок
Сообщения
3
Репутация
0
Но ведь как-то ввод от мыши и с клавы туда поступает?
Опять же, это ж все равно винда, и отрисовка идёт стандартными функциями из системной библиотеки? Или я чего-то недопонимаю?
Тут вообще скрипт не видит окна.
upd: Посмотрел прогу через resource hacker. Только переводы и иконки. Ещё XML со словом microsoft, но меню и ускорителей никаких нет :(
upd2:
Код:
$hWnd = WinGetHandle("[CLASS:QWidget]")
	WinActivate($hWnd)
	ToolTip ($hWnd, 25,50)
показывает мне что hWnd получен, но ввод все равно идёт мимо окна, и само окно после WinActivate в некоторых случаях сразу обратно сворачивается.
 
V

VitAl2013

Гость
отрисовка идёт стандартными функциями из системной библиотеки
Мне кажется что какраз Qt потому и кросплатформа, что всё делает через себя. И отрисовывает и воспринимает. Винда даёт программе только Окно, доступ до проца, общепринятых во всех системах ДОС уровня функций (читать, писать... рутовые функции), и кусочек оперативки по требованию. Потому и можно отловить только окно.
ввод от мыши и с клавы
мышу уже сказал как, а клава - вполне может быть на уровне глубже чем использует Send (уровень драйверов, певичного обработчика нажатий)

Такой более глубокий перехват могут продемонстрировать всякие ГеймГуарды. Не разрешают вводить "как бы с клавиатуры" и от сторонних программ. Только непосредственно с клавы и мыши.

все равно идёт мимо окна
Вполне вероятно есть ещё какие-то окна отвечающие темже требованиям.

Вопрос к Гуру: А можно ли так делать запрос на хэндл - указывая только класс окна? Может тут собака порылась?
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
OffTopic:
rivega, Ты на дату смотрел :D
 
Верх