Название: Win API [Решено] Отправлено: sergek от Июль 19, 2018, 12:23 Жаль, что нет "вопросы идиотов")) У меня вопрос из этого раздела - скажите, GUI в windows в Qt сделан на основе win api? Можно ли использовать win api для доступа к элементами GUI программ qt?
Название: Re: Win API Отправлено: kuzulis от Июль 19, 2018, 13:09 > GUI в windows в Qt сделан на основе win api?
угу > Можно ли использовать win api для доступа к элементами GUI программ qt? Вроде нет, т.к. все виджеты отрисовываются самим Qt, и не являются "нативными" объектами. Можно найти только хендл самого окна приложения, но вот хендлы его контролов/виджетов не найдешь, их нет :). PS: Хотя хз, никогда не задавался таким вопросом. Название: Re: Win API Отправлено: Igors от Июль 19, 2018, 13:49 Во всяком случае нативные хендлы создаются при вызове QWidget::winId(), хотя иногда глючат размеры, лучше до show. Получать таким образом нужное HWND можно, причем не только для окон верхнего уровня.
Название: Re: Win API Отправлено: sergek от Июль 19, 2018, 14:31 Ок, спасибо. Действительно, получить окно у меня получалось, а самый простой lineedit - нет.
Закроем тему. Название: Re: Win API [Решено] Отправлено: Igors от Июль 19, 2018, 14:58 Да простят мою навязчивость, но я ведь помню что работало
Код: #include <QtWidgets> id ненулевой, и тот самый что покажет утилита Spyint main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget * win = new QWidget; printf("winID = %p\n", (void *) win->winId()); QLineEdit * edit = new QLineEdit(win); WId id = edit->winId(); printf("editID = %p\n", (void *) id); win->show(); return app.exec(); } Название: Re: Win API [Решено] Отправлено: sergek от Июль 19, 2018, 16:02 Речь немного о другом - нужно прочитать содержимое элементов GUI программы, написанной на Qt. Я раньше делал нечто подобное - отыскивается дескриптор главного окна программы, потом перебираются дочерние дескрипторы и т.д. Это получается со многими программами, например, попробовал сейчас winscp, putty (во вложении), с проводником. А для программ qt отрисовывается только главное окно и все.
Вообще-то это не мне нужно, а мне сильно углубляться в тему не хочется. Так, попробовал старые наработки - не получилось, и ладно) Спасибо, коллеги. |