Он печатает символы все отлично! НО почему он в конце после того как все напечатал ставит 1 и удаляет все что напечатал
Как исправить ситуацию?
Return Value
None.
Написано в мануале
К примеру, начать думать
Причем тут "Send()", вы бы хотябы потрудились для начала посмотреть и протестировать примеры к функции "_IEFormElementSetValue()".
Код:
#include <IE.au3>; ====================================; Пример 1 - Открывает браузер с примером "form", устанавливает значение текста элемента формыLocal$oIE=_IE_Example("form")Local$oForm=_IEFormGetObjByName($oIE,"ExampleForm")Local$oText=_IEFormElementGetObjByName($oForm,"textExample")_IEFormElementSetValue($oText,"Эй! Это работает!"); ====================================; Пример 2 - Получает ссылку на указанный элемент формы и устанавливает его значение.; в этом примере запрос в поисковой системе Google$oIE=_IECreate("http://www.google.com")$oForm=_IEFormGetObjByName($oIE,"f")Local$oQuery=_IEFormElementGetObjByName($oForm,"q")_IEFormElementSetValue($oQuery,"AutoIt IE.au3")_IEFormSubmit($oForm); ====================================; Пример 3 - Устанавливает значение элемента INPUT TYPE=TEXT используя Send()$oIE=_IE_Example("form")$oForm=_IEFormGetObjByName($oIE,"ExampleForm")Local$oInputFile=_IEFormElementGetObjByName($oForm,"textExample"); Назначает фокус ввода в поле ии далее высылает строку текста_IEAction($oInputFile,"focus"); Выделяет текущее содержимое, чтобы перезаписать его._IEAction($oInputFile,"selectall")Send("Это работает!"); ====================================; Пример 4 - Устанавливает значение элемента INPUT TYPE=TEXT; в невидимое окно, используя ControlSend()$oIE=_IE_Example("form"); Скрывает окно браузера, чтобы продемонстрировать высылку текста в невидимое окно_IEAction($oIE,"invisible")$oForm=_IEFormGetObjByName($oIE,"ExampleForm")$oInputFile=_IEFormElementGetObjByName($oForm,"textExample"); Назначает фокус ввода в поле ии далее высылает строку текста_IEAction($oInputFile,"focus"); Выделяет текущее содержимое, чтобы перезаписать его._IEAction($oInputFile,"selectall"); Получает дескриптор окна IE.Local$hIE=_IEPropertyGet($oIE,"hwnd")ControlSend($hIE,"","[CLASS:Internet Explorer_Server; INSTANCE:1]","Это работает")MsgBox(4096,"Успешно","Значение установлено в 'Это работает'")_IEAction($oIE,"visible")
Существует такая особенность языка
[box title=Примечания по использованию функций]Даже если в документации указано, что функция не возвращает значение, AutoIt всё равно возвращает значение (чтобы избежать ошибок). Чаще всего возвращается значение 1, но вы не должны на него ориентироваться.[/box] Таким образом, у вас получается, что функция Send() возвращает единицу, а функция _IEFormElementSetValue() устанавливает значение элементу вместо текущего, т.е. единицу.
К примеру, начать думать
Причем тут "Send()", вы бы хотябы потрудились для начала посмотреть и протестировать примеры к функции "_IEFormElementSetValue()".
Код:
#include <IE.au3>; ====================================; Пример 1 - Открывает браузер с примером "form", устанавливает значение текста элемента формыLocal$oIE=_IE_Example("form")Local$oForm=_IEFormGetObjByName($oIE,"ExampleForm")Local$oText=_IEFormElementGetObjByName($oForm,"textExample")_IEFormElementSetValue($oText,"Эй! Это работает!"); ====================================; Пример 2 - Получает ссылку на указанный элемент формы и устанавливает его значение.; в этом примере запрос в поисковой системе Google$oIE=_IECreate("http://www.google.com")$oForm=_IEFormGetObjByName($oIE,"f")Local$oQuery=_IEFormElementGetObjByName($oForm,"q")_IEFormElementSetValue($oQuery,"AutoIt IE.au3")_IEFormSubmit($oForm); ====================================; Пример 3 - Устанавливает значение элемента INPUT TYPE=TEXT используя Send()$oIE=_IE_Example("form")$oForm=_IEFormGetObjByName($oIE,"ExampleForm")Local$oInputFile=_IEFormElementGetObjByName($oForm,"textExample"); Назначает фокус ввода в поле ии далее высылает строку текста_IEAction($oInputFile,"focus"); Выделяет текущее содержимое, чтобы перезаписать его._IEAction($oInputFile,"selectall")Send("Это работает!"); ====================================; Пример 4 - Устанавливает значение элемента INPUT TYPE=TEXT; в невидимое окно, используя ControlSend()$oIE=_IE_Example("form"); Скрывает окно браузера, чтобы продемонстрировать высылку текста в невидимое окно_IEAction($oIE,"invisible")$oForm=_IEFormGetObjByName($oIE,"ExampleForm")$oInputFile=_IEFormElementGetObjByName($oForm,"textExample"); Назначает фокус ввода в поле ии далее высылает строку текста_IEAction($oInputFile,"focus"); Выделяет текущее содержимое, чтобы перезаписать его._IEAction($oInputFile,"selectall"); Получает дескриптор окна IE.Local$hIE=_IEPropertyGet($oIE,"hwnd")ControlSend($hIE,"","[CLASS:Internet Explorer_Server; INSTANCE:1]","Это работает")MsgBox(4096,"Успешно","Значение установлено в 'Это работает'")_IEAction($oIE,"visible")
ArgoNaft
Запомните одно: _IEFormElementSetValue и Send - совершенно разные функции, и использовать их надо не вместе, а отдельно, либо одну, либо другую, но не одну в другой.
Во-первых, не программа, а функция (подпрограмма).
Во-вторых, не должна, а может.
В-третьих, не любая, а та, у которой нет возвращаемого значения (по документации). Остальные функции должны возвращать значения в соответствие с документацией.
В-четвёртых, любая функция после выполнения возвращает результат, даже если в ней это явно не указано. И если вы передаёте в функцию другую функцию в виде параметра, то работать вы будете с результатом выполнения переданной функции (что и получилось в вашем примере)
Код:
; В сообщении будет результат выполнения; функции вывода в консоль - количество; выведенных символовMsgBox(0,"",ConsoleWrite("test"&@CRLF))