Что нового

[Автоматизация] 2-а текстовых редактора, доступ к элементам текста

RomanPavlovich

Программист 1с и AS3
Сообщения
3
Репутация
0
Есть такой язык программирования PAWNO.
Для него существуют 2-а текстовых редактора.
Не могу в первом передать текст (Send, ControlSend), но могу прочитать текст находящийся в окне, второму соответственно могу передать текст, но блин не могу прочитать текст (ControlGetT, WinGetText).

Профессионалы, помогите пожалуйста, 3-и сутки не могу вопрос решить.
Код:
#include <Constants.au3>

Global $MScript = "2"
if $MScript = "1" Then ;Pawno
   $hWnd = WinWaitActive("[CLASS:TfmMain]") ;
else
   $hWnd = WinWaitActive("[CLASS:Twnd_pad]") ;
EndIf
If Not $hWnd Then
    MsgBox(4096, 'Сообщение', 'Окно не найдено, завершаем работу скрипта')
    Exit
EndIf
sleep(200)
WinActivate($hWnd); Ждём до победы, пока не активируем окно

;if ControlFocus($hWnd, "", "") = 0 Then
;  MsgBox(4096, 'Сообщение', 'Окно не ControlFocus')
;EndIf

;$Text = ControlGetText($hWnd, "", "TSynEdit1")
$Text = WinGetText($hWnd)
MsgBox(4096, 'Текст элемента:', $Text)

Send("{ENTER}Send текст");
if ControlSend($hWnd, "", "[CLASS:TSynEdit]", " t1") = 0 Then ; работает
   ;MsgBox(4096, 'Сообщение', 'Окно не найдено')
EndIf
ControlSend($hWnd, "", "TSynEdit", " t2");;не работает
ControlSend($hWnd, "", "[CLASSNN:TSynEdit]", " t3");; не работает
ControlSend($hWnd, "", "", " t4");; работает

MsgBox(0, "Заголовок окна 2", "Выполнено.")

2-а этих редактора прилагаю к посту в архиве.
https://dl.dropboxusercontent.com/u/90800199/pawno.zip
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
RomanPavlovich

Там, где у вас "не работает", нужно указать номер элемента - единицу
Код:
ControlSend($hWnd, "", "TSynEdit1", " t2");; так работает
ControlSend($hWnd, "", "[CLASSNN:TSynEdit1]", " t3");; так работает


А с "нечитаемыми" элементами можно работать через буфер обмена
Код:
ControlSend("PawnoX", "", "TSynEdit1", "^a") ; выделить всё
ControlSend("PawnoX", "", "TSynEdit1", "^c") ; копировать
ControlClick("PawnoX", "", "TSynEdit1") ; сбросить выделение
ConsoleWrite(ClipGet() & @CRLF) ; прочитать буфер обмена
 
Верх