1

Тема: AHK: Работа с выделенным текстом

Всем добрый день! Я сразу оговорюсь, что не программист, но встала вот такая задача: есть несколько объектов (каждый раз разное количество, но не больше 150), необходимо проверить размер каждого и если он больше заданного, то делать равным определенному значению.
Смена объектов происходит нажатием клавиши Tab. После нажатия например Ctrl+F4 становится выделенным размер объекта. Собственно моя мысль уперлась в момент проверки. Значения в выделенной области могут быть как "15.32 мм", так и "9.678 мм" или "5.0 мм". Примерно вот так должен выглядеть код:


F5:: ; запустил скрипт
Loop, 150 ; 150 раз повторяться будет все это безобразие
{
Send, {TAB} ; это я выбрал объект
Send, {CTRLDOWN}{F4}{CTRLUP} ; выделил размер
Clipboard = ; почистил буфер
Send ^c ; скопировал в буфер
; здесь надо как-то получить число до точки
if число < 9
{
Send, {TAB} ; все нормально и идем к следующему объекту
}
else
{
Send, 9{ENTER} ; задаю нужный размер
Send, {TAB} ; теперь все нормально и идем к следующему объекту
}
}
return

Буду признателен за любую помощь.

2

Re: AHK: Работа с выделенным текстом

Так сойдёт?


Str := "15.32 мм" 
RegExMatch(Str, "(\d+)\.", Num)

MsgBox, %Num1%

3 (изменено: J2K, 2012-02-02 16:30:44)

Re: AHK: Работа с выделенным текстом

Да, спасибо! В моем варианте, тогда окончательный скрипт должен выглядеть так:

F5:: ; запустил скрипт
Loop, 150 ; 150 раз повторяться будет все это безобразие
{
Send, {TAB} ; это я выбрал объект
Send, {CTRLDOWN}{F4}{CTRLUP} ; выделил размер
Clipboard = ; почистил буфер
Send ^c ; скопировал в буфер
Str := Clipboard
RegExMatch(Str, "(\d+)\.", Num)
if (Num < 9)
{
Send, {ESC} ; снял выделение
Send, {TAB} ; все нормально и идем к следующему объекту
}
else
{
Send, 9{ENTER} ; задаю нужный размер
Send, {TAB} ; теперь все нормально и идем к следующему объекту
}
}
return

Должно работать, пошел проверять.

4

Re: AHK: Работа с выделенным текстом

Нет, не должно. Вы не заметили разницу между Num и Num1. Результат будет именно в последней переменной.

5 (изменено: J2K, 2012-02-02 19:24:56)

Re: AHK: Работа с выделенным текстом

Действительно не работало Спасибо за подсказку. Малость оптимизировал:


F5:: ; запустил скрипт
Loop, 150
{
Send, {CTRLDOWN}{F4}{CTRLUP} ; выделил размер
Clipboard = ; почистил буфер
Send ^c ; скопировал в буфер
Str := Clipboard
RegExMatch(Str, "(\d+)\.", Num)

if (Num1 < 9)
{
Send, {ESC} ; снял выделение
}
else
{
Send, 9{ENTER} ; задаю нужный размер
}
Send, {TAB} ; все нормально и идем к следующему объекту
}
return

Если вдруг кому-то что-то подобное понадобится, можно пользоваться:D