Автор Тема: Нажатие Enter (не эмуляция)  (Прочитано 1645 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1433
  • Репутация: 212
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Нажатие Enter (не эмуляция)
« Ответ #15, Отправлен: Май 17, 2018, 23:52:32 »
... попробуйте потыкать Enter...
Код: AutoIt [Выделить]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Local $iFlag = 0, $hGUI = GUICreate("", 230, 100)
$iInput1 = GUICtrlCreateInput("notepad", 20, 20, 120, 20)
$hInput1 = GUICtrlGetHandle($iInput1)
$iInput2 = GUICtrlCreateInput("calc", 20, 50, 120, 20)
$hInput2 = GUICtrlGetHandle($iInput2)
$Button1 = GUICtrlCreateButton("Run1", 150, 20, 60, 20)
$Button2 = GUICtrlCreateButton("Run2", 150, 50, 60, 20)
GUISetState()
GUIRegisterMsg($WM_COMMAND, '_WM_COMMAND')

While 1
    Switch GUIGetMsg()
        Case $Button1
            $iFlag = $iInput1
        Case $Button2
            $iFlag = $iInput2
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
    If $iFlag Then
        Run(GUICtrlRead($iFlag))
        $iFlag = 0
    EndIf
WEnd

Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    ; Смотрите пример (http://autoit-script.ru/autoit3_docs/userfunctions/WM_COMMAND.htm) в справке
    ; по каким признакам можно определить нажатие Enter
    If $wParam = 1 And $lParam = 0 Then
        Switch ControlGetHandle($hGUI, '', '') ; http://autoit-script.ru/index.php?topic=21382.msg125880#msg125880
            Case $hInput1
                $iFlag = $iInput1
            Case $hInput2
                $iFlag = $iInput2
        EndSwitch
    EndIf
    Return $GUI_RUNDEFMSG
EndFunc   ;==>_WM_COMMAND


Русское сообщество AutoIt

Re: Нажатие Enter (не эмуляция)
« Ответ #15 Отправлен: Май 17, 2018, 23:52:32 »

Оффлайн kyi [?]

  • Новичок
  • *
  • Сообщений: 43

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Нажатие Enter (не эмуляция)
« Ответ #16, Отправлен: Май 18, 2018, 09:26:05 »
Alofa, спасибо
Работает как задумано, сейчас буду разбираться

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1433
  • Репутация: 212
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Нажатие Enter (не эмуляция)
« Ответ #17, Отправлен: Май 18, 2018, 10:09:01 »
OffTopic
... буду разбираться
Для того чтобы разбираться вам нужно понять как взаимодействуют элементы управления окна с самим окном, что такое WM-события
... и как они обрабатываются. Что в GUI Autoit есть свой штатный обработчик таких событий (с двумя режимами работы), но если его функционала не хватает, то можно установить свой обработчик (смотри GUIRegisterMsg()).
Так вот, а для всего этого вам необходимо познать Концепцию GUI. Одно "цепляется" за другое, вот я и говорю: прежде чем писать готовые скрипты нужно прочитать и понять основы языка и то как он работает с ОС.
« Последнее редактирование: Май 18, 2018, 18:19:33 от Alofa »

Русское сообщество AutoIt

Re: Нажатие Enter (не эмуляция)
« Ответ #17 Отправлен: Май 18, 2018, 10:09:01 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
4 Ответов
9945 Просмотров
Последний ответ Декабрь 04, 2009, 09:47:21
от ODIE
5 Ответов
4921 Просмотров
Последний ответ Декабрь 28, 2009, 10:59:29
от Kaster
8 Ответов
9353 Просмотров
Последний ответ Май 01, 2011, 17:17:11
от Yashied
5 Ответов
2532 Просмотров
Последний ответ Июнь 19, 2014, 21:05:48
от mr.Gbabak
4 Ответов
1451 Просмотров
Последний ответ Август 18, 2014, 15:19:28
от Core2Duo76
3 Ответов
2029 Просмотров
Последний ответ Сентябрь 22, 2014, 16:59:54
от inververs
10 Ответов
2417 Просмотров
Последний ответ Ноябрь 15, 2014, 01:52:28
от Jotun
8 Ответов
4972 Просмотров
Последний ответ Май 05, 2015, 13:35:48
от madmasles
0 Ответов
764 Просмотров
Последний ответ Май 04, 2015, 21:51:13
от madmasles
3 Ответов
1409 Просмотров
Последний ответ Октябрь 19, 2015, 20:12:35
от den23rus