Конвертировать положение мыши в пикселях в строки и столбцы (или PS) в эмуляторе мэйнфреймов - PullRequest
0 голосов
/ 02 октября 2019

Необходимо преобразовать координаты мыши в положение PS или строку и столбец в эмуляторе мэйнфрейма.

Я использую Whllapi для подключения и автоматизации эмулятора мэйнфрейма. Мне нужно найти основное поле, когда пользователь перемещает мышь или щелкает поле на экране эмулятора. Чтобы определить поле в эмуляторе мэйнфрейма, мне нужно знать строку и столбец или положение PS. Мне нужно преобразовать положение мыши (в пикселях) в строку и столбец эмулятора. Но в whllapi нет API, обеспечивающего такую ​​функциональность.

Я использовал whllapi api «QueryWindowCoordinates» и «WindowStatus», чтобы получить координаты окна эмулятора и окно hwnd. Я использовал этот дескриптор в API окна «SreenToCleint», чтобы получить положение мыши относительно окна эмулятора. Но яне удалось перевести эти координаты в строки и столбцы эмулятора. Я перепробовал множество алгоритмов, но не смог получить согласованных результатов. Мне нужно перевести положение мыши точно в положение PS. В документации Whllap упоминается API WindowStatus для возврата размеров шрифта для x и y. но я не могу получить какое-либо значение из эмулятора Rumba. Чтобы получить интересующие высоту и ширину, я также попробовал api окна 'GetTextMetrcies', но это тоже не сильно помогло.

1 Ответ

0 голосов
/ 15 октября 2019

IBM Personal Communications для Windows предлагает функцию DDE "Get Mouse Input", которая возвращает данные о положении PS (строка, столбец), когда пользователь щелкает мышью. Есть еще одна функция DDE, Set Mouse Intercept Condition, для определения того, какие щелчки мыши (левую, правую, среднюю, одинарную, двойную и т. Д.) Следует перехватывать. Я не вижу прямого способа захвата простых движений мыши с помощью функций DDE, но это может быть возможно (если вы очень осторожны в программировании Windows), если вы генерируете симулированные, ограниченные по скорости щелчки мыши и только когда указатель мышиперемещается в окне эмулятора.

Возможно, Rumba предлагает аналогичные функции? Очевидно, что в Rumba есть некоторые функции DDE, но я не нашел ссылки на функции DDE для Rumba, общедоступной в Интернете.

Одно возможное предостережение заключается в том, что функции DDE являются 32-разрядными (и 16-разрядные функции также все еще существуют). поддерживается, поскольку в 32-битной Windows все еще работает 16-битный код). Вы можете использовать 32-битные функции, если вы занимаетесь программированием на 64-битной Windows, но, конечно, вам нужно знать, как это сделать, если вы этого еще не сделали. Еще одно предостережение: вам, вероятно, следует протестировать все, что вы делаете, на предмет доступности для пользователя, например, с помощью инструментов для чтения с экрана, которые помогают пользователям с нарушениями зрения.

Другой возможный подход - встроить весь эмулятор в свою собственную "оболочку". "приложение, поскольку это может дать вам больше возможностей программирования и контроля. IBM предлагает как встраивание в стиле ActiveX / OLE, так и встраивание в стиле Java (их «библиотеки классов доступа к хосту», также называемые HACL). Rumba может предложить что-то похожее.

И еще один возможный подход состоит в том, чтобы перенести взаимодействие с этими приложениями на API-интерфейсы и отдать предпочтение новым, более портативным пользовательским интерфейсам, обычно веб-интерфейсам и мобильным интерфейсам. Есть множество способов сделать это. Если вам все еще нужна автоматизация на основе терминала (3270) - возможно, из-за того, что исходный код приложения утерян или иначе сложно создать полезные API для него? - Есть множество способов перенести эту автоматизацию в бэкэнд. Например, CICS Transaction Server для z / OS поставляется с несколькими технологиями автоматизации терминала в качестве стандартных включенных функций. Ищите ссылки на «мост 3270» и «FEPI» в Центре знаний IBM для CICS, чтобы изучить этот диапазон вариантов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...