Тема: AHK: Обход бага диалога в Illustrator
Я полный чайник в АХК с не очень большим опытом в программирования вообще.
Но я надеюсь, что он мне поможет не только в автозамене и горячих клавишах под сложные комбинации, но и для обхода очень назойливого бага в IllustratorCC, в котором я работаю.
С версии CS4 разработчики сменили направление y-координаты, очевидно, чтобы унифицировать её в контексте других программ семейства. После 15 лет автоматизированной привычки мне совершенно не хотелось переучиваться, поэтому я быстро нашёл вполне легальный способ обойти нововведение. Для этого достаточно заменить "1" на "0" для строк "isRulerOriginTopLeft" и "isRulerIn4thQuad" в Prefs-файле программы.
К сожалению, такая правка вызывает проблему с диалоговым окном Move (уже проверял, именно поэтому).
Когда я вручную вбиваю значения дл вертикального сдвига в этом окне, Илюстратор оставляет его при следующем запуске диалога (это пока не баг). А вот если я поменяю знак этого значения на противоположный, он его проигнорирует (это баг).
Например, я набираю "10" и жму Enter. При следующем вызове окна я меняю подставленные "10" на "-10". Жму ли я Tab после этого или сразу Enter — Illustrator всё равно сделает сдвиг плюс десять, а не минус десять. В обратную сторону то же самое, и только для вертикального сдвига.
Такое происходит только для пары зеркальных значений. Может показаться редкостью, но в моей работе это одна из самых частых операций. Мне приходится либо вписывать для сдвига значение больше по модулю, потом делать повторный сдвиг, чтобы компенсировать перелёт, либо вручную менять "90" на "-90" (и наоборот) в том же окне — тогда Иллюстратор понимает. И про то и другое надо вовремя вспомнить, что неудобно.
Итак, я пытаюсь выполнить следующий алгоритм:
Когда определённое окно с "Move" в заголовке и ahk_class "Illustrator" появляется, скрипт (уже с #Persistent, там другие вещи дописаны) должен запомнить значение в текстовом поле "Edit 3" (если оно там есть) сравнить его с новым после нажатия Tab или Enter, и если оно зеркально — перехватить нажатие клавиш, перейти в поле "Edit 1", сделать зеркальным число в нём и далее либо перейти"Edit 2" (если был нажат Tab) или симулировать Enter, если он и был нажат.
Но у меня ничего не выходит :(
Моя попытки настолько жалки, что показывать решительно стыдно и нечего (всё танцы с WinGetActiveTitle, Loop и MsgBox).
Помогите, пожалуйста. Я убеждён, что AHK может и похлеще вещи (тут их тьма).


