Я предполагаю, что вам нужно загрузить поля элементов управления Edit, доступных только для чтения, из строки во втором сценарии.
Чтобы изменить содержимое элементов управления Edit и предположить, что выВы делаете это из того же скрипта, который создал GUI, вы можете использовать команду GuiControl
с подкомандой Text
, которая позволяет вам установить текст уже созданного элемента управления вместо добавления новогоТекстовые элементы управления для графического интерфейса.
Синтаксис этой команды:
GuiControl, Text, ControlID[, Value]
Где ControlID
- это переменная, связанная с имеющимся элементом управления (UserInput1
, UserInput2
,и т. д.) (или также имя его класса и номер экземпляра (в вашем случае Edit1
, Edit2
и далее) или уникальный идентификатор элемента управления, его HWND ).
Например, вы могли бы заменить свой цикл следующим:
count = 1
Loop, Parse, str, `r`n,
{
If (RegExMatch(A_LoopField,"^\|------|^\| \||Title|Agreement|type") > 0 )
continue
m := StrSplit(A_LoopField, "|")
GuiControl, Text, UserInput%count%, % m[4]
count += 1
}
Что бы сработать.Заметьте, что я использую переменную count для ссылки на правильный элемент управления Edit каждый раз.
Вам не нужно беспокоиться о том, что элемент управления Edit равен ReadOnly
, так как этот параметр запрещает только пользователю изменять его содержимое, а не ваши сценарии.
Я также изменил разделитель цикла на `r`n
, который является правильным разделителем строки для циклов анализа, но это не должно повлиять на ваш скрипт.
Однако предыдущий подходпредполагается, что переменные, связанные с элементами управления вашего графического интерфейса (UserInput1
, UserInput2
, ...), также существуют во втором сценарии, что не происходит, если они не оба включаются в один и тот же основной сценарий с использованием директивы #include
или вставляя их вместе вручную в один файл.
Если ваши сценарии нуждаются в для разделенияпроцессы, выполняющиеся параллельно по какой-то причине (возможно, нет), вы все равно можете установить текст элемента управления из второго сценария, используя команду ControlSetText
, синтаксис которой:
ControlSetText[, Control, NewText, WinTitle, WinText, ExcludeTitle, ExcludeText]
В вашем случае вы можете указать 'EditN
' в параметре Control
для вашего N-го элемента управления Edit и 'New GUI Window ahk_class AutoHotkeyGUI
' для параметра WinTitle
(и оставить остальные параметры пустыми).), который будет соответствовать окну и элементу управления вашего графического интерфейса пользователя (если не существует нескольких AutoHotkeyGUI с одинаковыми заголовками или если в первом из них есть несколько элементов управления редактированием).[ Подробнее о параметре WinTitle ].
Используя эту команду, ваш цикл можно переписать так:
count = 1
Loop, Parse, str, `r`n
{
If (RegExMatch(A_LoopField,"^\|------|^\| \||Title|Agreement|type") > 0 )
continue
m := StrSplit(A_LoopField, "|")
ControlSetText, Edit%count%, % m[4], New GUI Window ahk_class AutoHotkeyGUI
count += 1
}
Где, конечно, вы можете заменить 'New GUI Window
'под любым названием, которое вы можете прекратить использовать.
С другой стороны, я настоятельно рекомендую вам рассмотреть другую стратегию хранения данных вашего графического интерфейса, а не использовать этот сложный синтаксис разметки и ваш пользовательский (ноработает;)) RegEx.
Существует много различных альтернатив для хранения данных скрипта в отдельном файле, но очень простой может быть использование Ini File , способного хранить пары ключ-значение информации, структурированный по разделам, для которых AutoHotKey предоставляет встроенные команды IniRead
, IniWrite
и IniDelete