Что нового

Вытащить информацию из окна приложения.

jastreb

Новичок
Сообщения
17
Репутация
1
Доброго времени суток.
Подскажите, возможно ли вытащить определенную строку или часть строки из окна программы?
Пример, нужно скопировать в буфер обмена цифры (обведены)
f26660adbd12.jpg

Информацию по этому окну посмотрел при помощи AutoIt Window Info
f6bb4024ecc8.jpg
 

Khaibit

Осваивающий
Сообщения
104
Репутация
26
Код:
$text = StringRegExp(WinGetText("Подтверждение",""),"(\d+)", 3)
MsgBox(0, "", $text[0])
 
Автор
J

jastreb

Новичок
Сообщения
17
Репутация
1
2:Khaibit
Спасибо, все работает, необходимые данные вытаскиваются верно.
Я хотел бы уточнить, правильно ли я понял механизм работы примера?
Код:
$text = StringRegExp(WinGetText("Подтверждение",""),"(\d+)", 3)

$text - Имя переменной которой присваивается полученный результат.
"Подтверждение" - строка поиска
"(\d+)", 3 - ищем любые десятичные цифры и возвращаем полученный результат

И еще, подскажите пожалуйста, как можно скопировать значение переменной $text в буфер обмена, что бы затем вставить в любой текстовый документ при помощи Ctrl+V?
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
jastreb [?]
как можно скопировать значение переменной $text в буфер обмена, что бы затем вставить в любой текстовый документ
Можно так:
Код:
;$sText=WinGetText("Подтверждение","")
$sText="Найдено 60 документов" & @CRLF & "Построить список ?"
ClipPut(StringRegExpReplace($sText, "\D*",""))
FileWrite( @ScriptDir & "\Temp.Txt", ClipGet() & @CRLF)
 
Автор
J

jastreb

Новичок
Сообщения
17
Репутация
1
Увы, к сожалению значение переменной $text в буфер не копируется.
Если написать
Код:
ClipPut($text)
, то в буфер ничего не копируется.
Код:
;Получаем необходимое значение в переменную $text
$text = StringRegExp(WinGetText("Подтверждение",""),"(\d+)", 3)
;Копируем значение в буфер
ClipPut($text)
;запускаем блокнот
Run("notepad")
Sleep(5000)
;пробуем вставить из буфера обмена
Send("^v")

И ничего не вставляет, в буфере пусто.
Код:
ClipGet($text)

Тоже ничего не возвращает.
Попробовал вывести окно со значением в буфере
Код:
MsgBox(4096, "Буфер обмена содержит:", ClipGet())

Окно пустое.
Получается, что в буфер ничего не копируется
Или я что то не так делаю.
 

sngr

AutoIT Гуру
Сообщения
1,015
Репутация
411
В буфер ничего не копируется потому что надо мат часть знать, т е справку изучить. StringRegExp с параметром 3 возвращает массив.
 

Khaibit

Осваивающий
Сообщения
104
Репутация
26
"Подтверждение" - это заголовок окна в котором мы ищем текст.
Переменная $text это массив поэтому нужно так
Код:
ClipPut($text[0])

p.s. пользуйтесь тегом Autoit.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
jastreb

Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
jastreb [?]
Получается, что в буфер ничего не копируется

А зачем использовать массив ?
Замени :
Код:
$text = StringRegExp(WinGetText("Подтверждение",""),"(\d+)", 3)

на :
Код:
$text = StringRegExpReplace(WinGetText("Подтверждение",""), "\D*",""); Удалить все нецифровые символы
 
Автор
J

jastreb

Новичок
Сообщения
17
Репутация
1
2:Kaster
Принял к сведению и учел ошибки.

2:All
Всем спасибо за ответы, очень помогли.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
jastreb [?]
Появился еще вопрос.
Предупреждение За нарушение общих правил (пункт В.4):
Не лепите несколько вопросов разной тематики в один пост. По типу "Ребят, а ещё такой вопрос...". Каждый вопрос в свою тему.


С уважением, ваш Модератор.
 
Верх