MEXAH
What if?
- Сообщения
- 28
- Репутация
- 2
Решил сделать костыли для програмки ABoo, которая иногда выдаёт ошибку связанную с словами конфликтующими со словарём. При работе программы в ней есть полоска прогресса (Class:TProgressBar Instance:1) в которой показан текущий прогресс обработки фрагмента текста. Сам фрагмент кстати тоже в окошке (Class:TMemo Instance:2), в момент ошибки полоска замирает.
Так вот, смысл в том чтобы выяснить точное числовое значение полоски прогресса, и потом применить найденный процент к фрагменту текста с тем чтобы найти примерное расположение строки с ошибкой в словаре. А далее уже вырезать соответствующий кусок текста с ошибкой и по нему быстро ошибку вычислить и исправить.
Раньше приходилось разбивать фрагмент на все более мелкие кусочки чтобы найти ошибку.
GuiCtrlRead выдает 0
Собственно как можно получить проценты из полоски прогресса?
Нашел некое промежуточное решение не без недостатков.
Выяснилось что нужное значение (выделено красным) на самом деле не проценты а некое число предельный размер которого плавает в диапазоне от 100 до 400 и зависит от размера обрабатываемого в данный момент фрагмента текста. Соответственно для вычисления процента нужно выяснить предельный размер этого числа, и вот этого способа я не нашел увы.
Решение найдено!
Так вот, смысл в том чтобы выяснить точное числовое значение полоски прогресса, и потом применить найденный процент к фрагменту текста с тем чтобы найти примерное расположение строки с ошибкой в словаре. А далее уже вырезать соответствующий кусок текста с ошибкой и по нему быстро ошибку вычислить и исправить.
Раньше приходилось разбивать фрагмент на все более мелкие кусочки чтобы найти ошибку.
GuiCtrlRead выдает 0
Собственно как можно получить проценты из полоски прогресса?
Нашел некое промежуточное решение не без недостатков.
Код:
$h_progress = ControlGetHandle("фрагмент с косяком.txt - ABoo","","TProgressBar1")
$ret = DllCall("user32.dll","int","SendMessage","hwnd",$h_progress,"int",$PBM_GETPOS)
_ArrayDisplay($ret)
Выяснилось что нужное значение (выделено красным) на самом деле не проценты а некое число предельный размер которого плавает в диапазоне от 100 до 400 и зависит от размера обрабатываемого в данный момент фрагмента текста. Соответственно для вычисления процента нужно выяснить предельный размер этого числа, и вот этого способа я не нашел увы.
Код:
$h_progress = ControlGetHandle($aPath3[1]&".txt - ABoo","","TProgressBar1")
$iRange = _SendMessage($h_progress, $PBM_GETRANGE, 0, 0, 0, "long", "long", "long")
Решение найдено!