Что нового

Кодировка в консоли редактора

SimplyDemon

Новичок
Сообщения
9
Репутация
0
Сам код
Код:
#Au3Stripper_Parameters=/mo

$oParent = _UIA_GetElementFromHandle(WinGetHandle("[ACTIVE]"))

$Text = "for both the t"
$oElement = _UIA_GetControlTypeElement($oParent, "UIA_TextControlTypeId", $Text, "Name", True)
If IsObj($oElement) Then
    ConsoleWrite("Найдено" & @CRLF)
Else
    ConsoleWrite("Не найдено!" & @CRLF)

EndIf

Вывод в консоль: http://prntscr.com/sf5b6m


Пробовал:
Переустановил программу на другой диск, что бы не было проблем с запрашиваемым доступом
в User.properties указал
Код:
code.page=65001
output.code.page=65001
LC_CTYPE=en_US.UTF-8
import au3.UserUdfs
import au3.keywords.user.abbreviations

После указания output.code.page=65001 вывод немного изменился http://prntscr.com/sf5bim
в Global.properties раскоментировать character.set=204
Кодировка файла UTF-8


Но читабельного варианта не удалось добиться, помогите плс :smile:
Сообщение автоматически объединено:

Версия: 3.3.14.5
Сообщение автоматически объединено:

Менял в AutoIt3Wrapper.au3
Код:
Func __ConsoleWrite($s)
    ConsoleWrite(BinaryToString(StringToBinary($s, 4), 1))
EndFunc   ;==>__ConsoleWrite


На
Код:
Func __ConsoleWrite($s)
    ConsoleWrite($s)
EndFunc   ;==>__ConsoleWrite

Не помогло
 
Последнее редактирование:

InnI

AutoIT Гуру
Сообщения
4 448
Репутация
1 206
Если в SciTE указано output.code.page=0, то можно пользоваться просто ConsoleWrite. Но тогда нужно соответственно изменить функцию __ConsoleWrite($s) в AutoIt3Wrapper.au3
Если в SciTE указано output.code.page=65001 и ConsoleWrite пишет крокозябры, то для вывода в консоль везде нужно использовать конструкцию вида
Код:
ConsoleWrite(BinaryToString(StringToBinary($s, 4), 1))
Даже в собственных скриптах. Следовательно, в AutoIt3Wrapper.au3 ничего менять не нужно, но в UIAutomate.au3 необходимо изменить функцию __UIA_ConsoleWriteError($sString) с учётом указанной выше конструкции
Код:
Func __UIA_ConsoleWriteError($sString)
  If $UIA_ConsoleWriteError Then ConsoleWrite(BinaryToString(StringToBinary("!> " & $sString, 4), 1) & @CRLF)
EndFunc ; __UIA_ConsoleWriteError
И ещё. Если у вас скрипты в UTF-8, то UIAutomate.au3 тоже желательно конвертнуть в UTF-8.
 
Автор
S

SimplyDemon

Новичок
Сообщения
9
Репутация
0
Если в SciTE указано output.code.page=0, то можно пользоваться просто ConsoleWrite. Но тогда нужно соответственно изменить функцию __ConsoleWrite($s) в AutoIt3Wrapper.au3
Если в SciTE указано output.code.page=65001 и ConsoleWrite пишет крокозябры, то для вывода в консоль везде нужно использовать конструкцию вида
Код:
ConsoleWrite(BinaryToString(StringToBinary($s, 4), 1))
Даже в собственных скриптах. Следовательно, в AutoIt3Wrapper.au3 ничего менять не нужно, но в UIAutomate.au3 необходимо изменить функцию __UIA_ConsoleWriteError($sString) с учётом указанной выше конструкции
Код:
Func __UIA_ConsoleWriteError($sString)
  If $UIA_ConsoleWriteError Then ConsoleWrite(BinaryToString(StringToBinary("!> " & $sString, 4), 1) & @CRLF)
EndFunc ; __UIA_ConsoleWriteError
И ещё. Если у вас скрипты в UTF-8, то UIAutomate.au3 тоже желательно конвертнуть в UTF-8.
Спасибо большое помогло, есть сообщение с ошибкой "> _UIA_GetControlTypeElement : элементы указанного типа не найдены"
Подскажите, еще, плс, этот пример не актуальный? http://autoit-script.ru/threads/uia...estandartnyx-ehlementov-gui.16780/post-129679 , писал код смотря на него.
 

InnI

AutoIT Гуру
Сообщения
4 448
Репутация
1 206
Пример актуален и даже работает. Проверил.
 
Автор
S

SimplyDemon

Новичок
Сообщения
9
Репутация
0
Пример актуален и даже работает. Проверил.
Понял, значит не правильно определяю переменную $oParent
Должно быть типо такого?
Код:
$hWnd = WinWait("[CLASS:Chrome_WidgetWin_1]", "", 3)
If ($hWnd) Then
    $oParent = _UIA_GetElementFromHandle(ControlGetHandle($hWnd, "", "Chrome_RenderWidgetHostHWND1"))

    $Text = "InnI"
    $oElement = _UIA_GetControlTypeElement($oParent, "UIA_TextControlTypeId", $Text, "Name", True)
    If IsObj($oElement) Then ConsoleWrite("Текст найден" & @CRLF)
EndIf

Но видимо неверный 3й аргумент "Chrome_RenderWidgetHostHWND1" у функции ControlGetHandle, подскажите какой нужно указать?
 

InnI

AutoIT Гуру
Сообщения
4 448
Репутация
1 206

У Chrome много служебных окон с классом Chrome_WidgetWin_1 и первым может быть не то, которое вы видите. Поэтому главное окно Chrome лучше искать по заголовку.
 
Верх