Да, алгоритм хеширования всегда выдает один и тот же результат. Если вы используете одну и ту же соль, это также всегда будет давать один и тот же результат для данного входа.
Во-первых, простой ответ: я думаю, что то, что вы пытаетесь сделать, вроде как сделано. Rex из Enable делает то, что я думаю, вам нужно, но IIRC, если говорить с разработчиками, это зависит от обработчиков кода, встроенных в приложение.
Это наводит на мысль, что я не думаю, что вы сможете делать то, что я думаю, вы пытаетесь делать полностью извне из приложения. Вы можете захватывать оконные дескрипторы с помощью WinAPI и делать с ними некоторые базовые вещи, но не так много, как вам нужно. И получить информацию о DataWindows с помощью WinAPI? Забудь это.
Я полагаю, Я слышал об API, подобном тому, о котором вы спрашиваете, но я никогда не слышал, чтобы кто-то другой, кто производители инструментов автоматизированного тестирования использовали его. Если это правда (и качество этой информации примерно такое, как «слышал это в коридоре»), я подозреваю, что это может быть связано с некоторыми проблемами безопасности приложений. (Я знаю , что вы никогда не захотите заразить мое приложение или выискивать мои секреты. ухмылка )
Даже с подключениями к пространству памяти PowerBuilder VM, я Мне не известно, что можно получить список объектов в памяти без каких-либо хуков фреймворка PowerScript (например, заполнение списка при каждом открытии и конструкторе с помощью дескрипторов объектов). Получив дескриптор окна, вы можете легко перемещаться по его массивам элементов управления (и массивам элементов управления его подклассов), чтобы получить список объектов в окне, но такие вещи, как дескрипторы переменных экземпляра NVO, будут проблематичными.
Я восхищаюсь этой идеей. Хотел бы я получить лучшие новости (кроме, может быть, Рекс может решить вашу проблему без головной боли, связанной с тем, чтобы делать это самому). Теперь я с нетерпением жду того, что может выпустить eran! ухмылка
Удачи,
Терри.
Я только что создал такой инструмент, но немного схитрил. Собственно, собирался задать себе тот же вопрос в группах новостей PB. Мое решение состоит из двух частей:
Шпионский инструмент - автономное приложение, похожее на Spy ++, то есть позволяет перетаскивать цель на элемент управления, используя функции Windows API (хотя и написанные на PB).
Внутренняя инфраструктура для целевых приложений - находится у предка всех окон приложения. Получив определенный (оконный) дескриптор, он проходит через массив Control [] и ищет элемент управления, дескриптор которого совпадает с заданным. Если необходимо, он также рекурсивно переходит в контейнеры элементов управления, такие как вкладки.
Когда пользователь выбирает элемент управления, шпионский инструмент сначала ищет его содержащее окно с помощью Windows API. При обнаружении инструмент отправляет в это окно настраиваемое сообщение, которое затем обрабатывается инфраструктурой приложения. Затем элемент управления размещается в приложении PB, и его детали, наконец, отправляются обратно в шпионский инструмент, который представляет их пользователю.
Я подозреваю, что часть инфраструктуры можно заменить какой-то внешней вещью, как я видел инструменты, которые, кажется, могут это сделать (Visual Expert, QTP). Однако у меня не было времени на дальнейшие исследования, и это решение было относительно легко разработать.
Я должен сказать, что ваш вопрос возник в неожиданное время. См. этот мой недавний вопрос . Если вас интересует созданный мной инструмент,