1

Тема: AHK: Ожидание ввода клавиши {Enter} в поле Edit

Доброго дня всем.
Чувствую, что вопрос из разряда нубских, но 3-й день ломания головы привел только к головной боли.
---
Есть две формы (два окна)
На одной не важно что
На второй есть поле ввода Edit и и текстовое поле, отображающее Юникод символ по коду введенному в поле Edit

Когда появляется второе окно весь скрипт должен прекратить работать и ждать окончания введения в поле Edit. Т.е. нажатия клавиши {Enter}
И вот с этим то и возникает проблема. Ни как не могу понять как это сделать. Помогите пожалуйста.

Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди

2

Re: AHK: Ожидание ввода клавиши {Enter} в поле Edit

Что значит "весь скрипт"? Горячие клавиши, таймеры, меню, OnMessage()? Что конкретно имеется в виду?
Дайте рабочий пример скрипта.

3 (изменено: creature.ws, 2012-07-29 09:24:45)

Re: AHK: Ожидание ввода клавиши {Enter} в поле Edit

SetTimer, test, -300

Gui, Add, Edit, vEdit
Gui, Show, w140 h32
Pause, on
return


~Enter::
    Pause, off
    Gui, Submit
    MsgBox % Edit . "`nПауза " . (A_IsSuspended? "в":"вы") . "ключена"
    Exitapp

Test:
    MsgBox
    return

Горячей клавише следует добавить проверку имени активного control'а, окно с editbox'ом сделать модальным.

4

Re: AHK: Ожидание ввода клавиши {Enter} в поле Edit

Спасибо creature.ws. Вроде бы то что нужно.
На счет термина "весь скрипт" - я к сожалению не придумал более корректного определения необходимого мне события. Просто, в моих "пробах пера" я не мог заставить скрипт остановиться на определенной строчке кода и не идти дальше, пока я не нажму клавишу Ентер. (кроме бесконечного цикла или команды Input, которая для меня теперь стала отдельным чёрным ящиком). Но, в первом чтении, код приведенный creature.ws-ом вроде бы делает то что нужно. Однако смогу его испробовать только вечером. Спасибо.

Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди

5

Re: AHK: Ожидание ввода клавиши {Enter} в поле Edit

SetFormat, IntegerFast, H
SomeString:="Some text to display"
OnMessage(WM_CHAR:=0x102, "WindowProc")
OnMessage(WM_KEYDOWN:=0x100, "WindowProc")

Gui, GUI1: Add, Text, x12 y10 w210 h20 Center, % SomeString
Gui, GUI2: Add, Text, x122 y10 w100 h20 Center, % SomeString
Gui, GUI2: Add, Edit, x12 y10 w100 h20 Center, % SomeString
Gui, GUI2: +AlwaysOnTop HwndhForm2
Gui, GUI1: Show, Hide w236 h44, Form1
Gui, GUI2: Show, Hide w239 h48, Form2
Begin:
   Gui, GUI2: Cancel
   Gui, GUI1: Show
   Sleep, 1500
   Gui, GUI1: Cancel
   Gui, GUI2: Show
   Return

Gui1GuiClose:
Gui2GuiClose:
   ExitApp

WindowProc(wParam, lParam, uMsg, hWnd)
{
   global hForm2
   static IsCheck
   If uMsg=0x102
   {
      ControlGetText, OutVar, Static1, % "ahk_id"hForm2
      If Not OutVar~="(^.\b){1,1}"
      {
         Sleep, 175
         ControlClick, Edit1, % "ahk_id"hForm2
         PostMessage, EM_SETSEL:=0xB1,, -1, Edit1, % "ahk_id"hForm2
      }
      ControlSetText, % IsCheck:="Static1"
                    , % "vk"SubStr(GetKeyVK(Chr(wParam)), 3)
                    . ", sc"SubStr(lParam>>16, 3)
                    , % "ahk_id"hForm2
   }
   If % uMsg=0x100 And wParam=0xD
      If IsCheck
         SetTimer, Begin, -0, IsCheck:=""
      Else MsgBox, 262208
                 , % "before press ENTER"
                 , % "Fill edit field"
                 , % 0.5
}

6 (изменено: Mikki, 2012-07-30 12:28:13)

Re: AHK: Ожидание ввода клавиши {Enter} в поле Edit

Огромное спасибо. Вы мне оба подсказали красивые варианты кода. Наверное использую их симбиоз. (Просто вы предвосхитили некоторые мои вопросы и я "с радостным трепетом в руках" "начинаю продолжать думать")

Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди