1

Тема: AHK: активация контрола EDIT при наборе текста в GUI

Есть простой скрипт с GUI. Запускаем его, набираем что-нибудь. Это что-нибудь набирается в контроле edit. Нажимаем кнопку button. Опять пишем что-нибудь (не активирую edit мышью), это самое что-нибудь уже не набирается в GUI.
Как сделать так, что бы при активном окне GUI набираемый текст всегда посылался в контрол edit, не зависимо от того, активировали мы его или нет?

gui, add, edit, vEdit x10 y330 w580
gui, add, button,, button
gui, show, autosize, gui

2

Re: AHK: активация контрола EDIT при наборе текста в GUI

gui, add, edit, vEdit x10 y330 w580
gui, add, button, gSub1, button
gui, show, autosize, gui
return

Sub1:
GUIControl, focus, Edit

3 (изменено: InFlames, 2010-12-26 13:58:18)

Re: AHK: активация контрола EDIT при наборе текста в GUI

Спасибо, работает.
1. А если в GUI присутствует множество других контролов: listview, кнопки и др., т.е. сбивающие фокус с нужного edita, каждый раз прописывать GUIControl, focus, Edit?
Неужели нет более универсального способа?

2. Если кнопка добавляет текст в Edit. Курсор вставляется не в конец строки, а в начало. Как сделать так, что бы курсор вставлялся в конец строки?

gui, add, edit, vEdit x10 y330 w580
gui, add, button, gSub1, Add text
gui, show, autosize, gui
return

Sub1:
GuiControl,, Edit, text
GUIControl, focus, Edit

Хотя по второму вопросу можно просто нажать END. Может есть другие способы?

4

Re: AHK: активация контрола EDIT при наборе текста в GUI

1. Наверное придётся прописывать в каждом сбивающем контроле gSub.
2. Лучшего варианта чем нажать END не могу предложить.

5

Re: AHK: активация контрола EDIT при наборе текста в GUI

Gui, +LastFound
Gui, Add, Edit, x0 y0 w100 h70
Gui, Add, Button, x20 y75 w60 h20, OK
GuiControl, Focus, Button1
Gui, Show, w100 h100
OnMessage(0x102, "WM_CHAR")
Return

WM_CHAR(wp, lp)
{
   GuiControlGet, Focus, Focus
   if Focus != Edit1
   {
      GuiControl, Focus, Edit1
      SendMessage, WM_CHAR := 0x102, wp, lp, Edit1
   }
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg