Местоположение вашей цели зависит от двух факторов: (1) границы вашего окна и (2) вертикального разрешения. Если мы сфокусируемся только на клиентской области (то есть на окне, исключающем ее границу и заголовок) и поместим начало координат нашей системы координат в верхний левый угол этой области, то позиция, которую вы хотите щелкнуть с разрешением 800x600, будет (356, 78)
, Мы можем напрямую масштабировать эту точку по отношению высоты фактического разрешения и, наконец, добавить границы и заголовок. Следовательно, окончательная формула будет:
newX = borderLeft + 356 * verticalResolution / 600
newY = borderTop + titleBarHeight + 78 * verticalResolution / 600
Интересно, что границы на ваших двух скриншотах разные. Снимок 800x600 имеет левую границу 4px, тогда как у другого 1px. Я предполагаю, что это из-за скриншота и предполагаю левую границу 4px. Верхняя граница и высота заголовка равны 23 пикселя.
Следовательно, у вас есть:
newX = 4 + 356 * verticalResolution / 600
newY = 23 + 78 * verticalResolution / 600
, которая дает вам местоположение (428, 116)
на скриншоте 1437x714, которое выглядит правильно, за исключением разницы в 3px из-за левой границы.