Что нового

[Мышь, клавиатура] Функция Send вначале печатает потом стирает и ставит 1

ArgoNaft

Новичок
Сообщения
129
Репутация
0
Send

Код:
_IEFormElementSetValue ($oEmail,Send("email here"))

Он печатает символы все отлично! НО почему он в конце после того как все напечатал ставит 1 и удаляет все что напечатал :smile:
Как исправить ситуацию?
Return Value
None.
Написано в мануале
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Re: [Мышь, клавиатура] Функция Send не понятно отрабатывает

ArgoNaft

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"[Мышь, клавиатура] Функция Send не понятно отрабатывает" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Глобальный модератор.
 
A

Alofa

Гость
ArgoNaft сказал(а):
Как исправить ситуацию?
К примеру, начать думать :smile:
Причем тут "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")
 

InnI

AutoIT Гуру
Сообщения
4,949
Репутация
1,443
ArgoNaft
Return Value None. Написано в мануале
Существует такая особенность языка
[box title=Примечания по использованию функций]Даже если в документации указано, что функция не возвращает значение, AutoIt всё равно возвращает значение (чтобы избежать ошибок). Чаще всего возвращается значение 1, но вы не должны на него ориентироваться.[/box] Таким образом, у вас получается, что функция Send() возвращает единицу, а функция _IEFormElementSetValue() устанавливает значение элементу вместо текущего, т.е. единицу.
 
Автор
A

ArgoNaft

Новичок
Сообщения
129
Репутация
0
а те это значит любая программа должна завершиться 1 если она верна и 0 если ошибка. Это как раз в моем случае.


Добавлено:
Сообщение автоматически объединено:

Alofa сказал(а):
ArgoNaft сказал(а):
Как исправить ситуацию?
К примеру, начать думать :smile:
Причем тут "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")
Ну и чем бы это мне помогло? Тут в другом проблема совершенно. Причем тут вообще _IEFormElementSetValue?
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
ArgoNaft
Запомните одно: _IEFormElementSetValue и Send - совершенно разные функции, и использовать их надо не вместе, а отдельно, либо одну, либо другую, но не одну в другой.
 

InnI

AutoIT Гуру
Сообщения
4,949
Репутация
1,443
ArgoNaft
значит любая программа должна завершиться 1 если она верна и 0 если ошибка
Во-первых, не программа, а функция (подпрограмма).
Во-вторых, не должна, а может.
В-третьих, не любая, а та, у которой нет возвращаемого значения (по документации). Остальные функции должны возвращать значения в соответствие с документацией.
В-четвёртых, любая функция после выполнения возвращает результат, даже если в ней это явно не указано. И если вы передаёте в функцию другую функцию в виде параметра, то работать вы будете с результатом выполнения переданной функции (что и получилось в вашем примере)
Код:
; В сообщении будет результат выполнения
; функции вывода в консоль - количество
; выведенных символов
MsgBox(0, "", ConsoleWrite("test" & @CRLF))
 
Верх