Как получить информацию о содержимом списка Qt в другом процессе - PullRequest
1 голос
/ 30 декабря 2010

Я получил приложение, написанное с использованием Qt, и я хотел бы прочитать данные в списке Qt. Он не отвечает на LB_GETTEXT или другие сообщения Windows, есть ли хороший способ получить данные из другого процесса?

У меня нет доступа к процессу Qt, его внешней программе. Я ищу способ доступа к содержимому LB из C #.

Как оказалось, есть плагин Accessibility для Qt, который должен обеспечивать поддержку необходимых операций. Однако я не согласен с QT, и мне неясно, нужно ли создавать приложение с разрешенной доступностью, или это функция, которую можно включать и выключать для любого приложения (или, по крайней мере, приложение для сборки по умолчанию, при котором доступ не отключается явно).

Я прочитал, и там говорится, что вам нужно запустить export QT_ACCESSIBILITY = 1, поместить файл qt.conf и поместить доступную папку в приложение Qt в главном корне. Я думаю, что я не совсем понимаю, как включить QT_ACCESSIBILITY = 1 и везде, где этого должно быть достаточно, чтобы приложение стало доступным. я добавил QT_ACCESSIBILITY = 1 в переменные окружения в свойствах моего компьютера, разве это поможет? Или экспорт QT_ACCESSIBILITY = 1 - это что-то другое.

Спасибо

Ответы [ 2 ]

2 голосов
/ 21 января 2011

Вы не можете легко это сделать, поскольку Qt не использует стандартные элементы управления Windows для реализации своих виджетов, поэтому вы не можете легко получить доступ к его содержимому с помощью стандартных методов Windows Api (functions / messages / windows ipc). Вам нужно будет каким-то образом взломать его память (не очень рекомендуется) или использовать какой-нибудь графический инструмент для автоматизации тестирования, который поддерживает Qt, например Squish .

LE: Возможно, вы также захотите проверить этот хак, форсируя загрузку подключаемого модуля Qt Accessible в приложение, а затем пытается проверить с помощью обычных инструментов, таких как Microsoft Spy ++, включенных в Visual Studio. См 1 и 2 .

2 голосов
/ 30 декабря 2010

Возможно, вы захотите использовать межпроцессное взаимодействие для этих целей: http://doc.qt.io/archives/qt-4.7/ipc.html

...