Что нового

_GUICtrlRichEdit_GetText и работа с ним

killmegerty

Новичок
Сообщения
4
Репутация
0
Здравствуйте. Задача стоит автоматизировать установку некого приложения. Как обычно жмем "далее","далее","далее"...
Но возникла необходимость копировать текст из РичЭдита (конкретно: путь до директории установки).
Код:
#include <GUIConstants.au3>
#include <GuiEdit.au3>
#include <GuiRichEdit.au3>

 
;ShellExecute("msiexec /i Handy Backup x64 (Release) 7.2.1.10971 2012.07.27.11.36 NOVOSOFT.msi /log install.log")
ShellExecute("Handy Backup x64 (Release) 7.2.1.10971 2012.07.27.11.36 NOVOSOFT.msi")

Opt("WinWaitDelay", 250)
$MasterInst="Мастер установки Handy Backup"
$Answer="fail"
WinWaitActive($MasterInst,"Вас приветствует Мастер установки")
Send("{ENTER}")
WinWaitActive($MasterInst,"Лицензионное соглашение с конечным пользователем")
Send("{ENTER}")
WinWaitActive($MasterInst,"Выборочная установка")
Send("{ENTER}")
WinWaitActive($MasterInst,"Изменить папку для установки")
$str="1"

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ВОТ ЗДЕСЬ
ControlFocus('','',"[CLASS:RichEdit20W; INSTANCE:1]")
$str=_GUICtrlRichEdit_GetText("[CLASS:RichEdit20W; INSTANCE:1]")
Sleep(500)
MsgBox(0,"Ответ",$str )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;Send("{ENTER}")
WinWaitActive($MasterInst,"Начало установки")
Send("{ENTER}")
if WinWaitActive($MasterInst,"Установка Handy Backup завершена") then $Answer="Ok"
ControlClick($MasterInst, "", "[CLASS:Button; INSTANCE:4]")
ControlClick($MasterInst, "", "[CLASS:Button; INSTANCE:5]")
Send("{ENTER}")
if $Answer="Ok" then MsgBox(0,"Ответ","Тест пройден успешно!") Else MsgBox(0,"Ответ","Тест не пройден")

Фокус работает, ГетТекст нет.. Итак знатоки вопрос, почему ГетТекст выдает пустую строку?
 

sngr

AutoIT Гуру
Сообщения
983
Репутация
392
По 2 причинам: ты код автоит не заключил в тег автоит и не прочитал в справке что делает _GUICtrlRichEdit_GetText.
Тебя не смущает приставка GUI в названии?
 
Автор
killmegerty

killmegerty

Новичок
Сообщения
4
Репутация
0
GUI- график юсер интерфейс насколько я помню. Устанавливаемая программа имеет оболочку , а значит и GUI тоже. Или ты намекаешь , что автоит может работать исключительно со своими родными созданными гуями(как я догадывался)?
 

sngr

AutoIT Гуру
Сообщения
983
Репутация
392
Тебе на догадыватся надо, а открыть справку. Автоит работает как со своими так и с чужими окнами.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 713
Код:
$hRE = ControlGetHandle('', '', '[CLASS:RichEdit20W; INSTANCE:1]')
ControlFocus('', '', $hRE)
$Str = _GUICtrlRichEdit_GetText($hRE)
Sleep(500)
MsgBox(0, 'Ответ', $Str)
 
Автор
killmegerty

killmegerty

Новичок
Сообщения
4
Репутация
0
Все равно ничего не выдает =(

проверил работу ControlGetHandle:
Код:
$Str = ControlGetHandle($MasterInst, "", "[CLASS:RichEdit20W; INSTANCE:1]")
MsgBox(0, "Ответ", $Str)

Выводит значение, не нуль- работает.
Значит не работает геттекс, может ему фокус другой какой-нибудь нужен?
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
killmegerty
А так?
Код:
$var = ControlGetText("Мастер установки Handy Backup", "", "[CLASS:RichEdit20W; INSTANCE:1]")
MsgBox(0, "Ответ", $var)
 
Автор
killmegerty

killmegerty

Новичок
Сообщения
4
Репутация
0
Решил проблему функцией _GUICtrlEdit_GetLine
Вот код:
Код:
$hW = ControlGetHandle("Мастер установки Handy Backup", "", "[CLASS:RichEdit20W; INSTANCE:1]")
msgbox(0,"Ответ",_GUICtrlEdit_GetLine($hW,0))

Всем спасибо за участие.
 
Верх