1 (изменено: cahtbap1, 2017-05-14 21:19:01)

Тема: AHK: Последний активный Edit в Gui

Вроде бы тема простая... Вот только ничего не нашел ни в справке ни в поиске по форуму.
Как же мне реализовать добавление в строку последнего активного Edit-а координат последующего мною нажатия на среднюю кнопку мыши?

2

Re: AHK: Последний активный Edit в Gui

ControlSend.

3

Re: AHK: Последний активный Edit в Gui

Странно составили вопрос, непонятно, в чём конкретно проблема. Не знаете, как координаты мыши определить?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

4 (изменено: ypppu, 2017-06-17 17:56:59)

Re: AHK: Последний активный Edit в Gui

Нет,нужно определить последний активный Edit. Я с другого ака.

5 (изменено: teadrinker, 2017-05-14 22:24:55)

Re: AHK: Последний активный Edit в Gui

А что значит «последний активный»? Это тот, который активен в данный момент?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6 (изменено: stealzy, 2017-05-14 22:52:41)

Re: AHK: Последний активный Edit в Gui

~*LButton::
	MouseGetPos,,, hWnd, classNN
	If (classNN ~= "Edit")
		LastEditNN := classNN, LastEditWindowId := hWnd
	Return

7 (изменено: belyankin12, 2017-05-14 22:40:33)

Re: AHK: Последний активный Edit в Gui

Я вот воспринял этот вопрос в плане: "Как использовать переменную, заданную в контроле Edit" (ответ: Gui, Submit, NoHide).

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.

8 (изменено: stealzy, 2017-05-14 22:50:48)

Re: AHK: Последний активный Edit в Gui

ControlGetFocus у меня увы не определяет, но может у вас работает?

~*Tab::
~*LButton::
	ControlGetFocus classNN
	If (classNN ~= "Edit")
		LastEditClassNN := classNN, LastEditWindowId := hWnd
	Return

9

Re: AHK: Последний активный Edit в Gui

Я тоже работал с окнами. Смотря что за прога. Скачай AHK spy и исследуй своё окно и найди пункт ClassNN, если его нет, как и в моём случае, то надо сначала развернуть окно и посылать туда методы стандартным способом (Send). А если ClassNN есть, то всё легко.

ControlSend, Edit1, This is a line of text in the notepad window., Untitled

Где Edit1 и есть наш класс.

10 (изменено: shahlik002, 2017-05-15 22:15:27)

Re: AHK: Последний активный Edit в Gui

Все конечно прекрасно , однако я для себя скрипт пишу .
Вот у меня есть n-ое количство Edit-ов , я пишу в каком-то любом из них , потом нажимаю кнопочку хоткея на координаты мыши и клоцаю по месту координаты которого хочу определить (В этот момент сбивается фокус с Edita на Button) , а потом по задумке эти координаты должны вписаться в тот самый Edit который я редактировал.
Я то думал есть какая-то встроенная переменная которая содержит в себе это , но увы не нашел такой.

11

Re: AHK: Последний активный Edit в Gui

OnMessage( 0x111, Func("WM_COMMAND").Bind(lastActiveEdit := []) )
Loop 3
   Gui, Add, Edit
Gui, Show
Return

~LButton::
   CoordMode, Mouse
   MouseGetPos, X, Y
   GuiControl,, % lastActiveEdit[1], x%X% y%Y%
   Return

WM_COMMAND(gotFocus, wp, lp)  {
   static EN_SETFOCUS := 0x100
   (wp >> 16 = EN_SETFOCUS && gotFocus[1] := lp)
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

12

Re: AHK: Последний активный Edit в Gui

А можно без изначального хоткея на Lbutton? ибо сам этот скрипт является неким подобием редактора макросов , и каждый раз проводить эту функцию я не хочу,тем более частенько для скорости работы я использую Tab.

13

Re: AHK: Последний активный Edit в Gui

Можно, это просто для примера, делайте любой хоткей.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

14

Re: AHK: Последний активный Edit в Gui

У меня только одна неправильная идея : создать для всех Edit-ов Label-ы записующие в переменную последний активный Edit.


gui,add,edit,x1 y1 w100 h20 vEdit1 gEdit1

Edit1:
Last_active_edit=vEdit1

15

Re: AHK: Последний активный Edit в Gui

teadrinker
Я имел ввиду без хоткеев.

16

Re: AHK: Последний активный Edit в Gui

Можно и без хоткеев.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

17 (изменено: Alectric, 2017-05-16 08:29:56)

Re: AHK: Последний активный Edit в Gui

gui,add,edit,x1 y1 w100 h20 vEdit1 gEdit
gui,add,edit,x+10 y1 w100 h20 vEdit2 gEdit
gui,add,edit,x+10 y1 w100 h20 vEdit3 gEdit
gui,add,button,x+10 y1 w100 h20 gbutt
gui,show
return

Edit:
Last_active_edit:=A_GuiControl
return

butt:
gui,submit,nohide
msgbox,% Last_active_edit
return
Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

18 (изменено: ypppu, 2017-06-17 17:57:21)

Re: AHK: Последний активный Edit в Gui

Спасибо!

19

Re: AHK: Последний активный Edit в Gui

teadrinker
Вроде получилось , но оно полностью изменяет текст,а в переменной хранит какой-то набор циферок.
Хотел добавить ControlSend но он циферки не принимает .
Это можно как-то исправить?
В остальном все отлично отслеживает. И кстати где мне найти справку на эти мудреные команды ,которые вы используете?)
Ибо вид ваших скриптов в корне отличается от тех что написаны в обычной справке.Сиди и думай что значат эти "static wp >> 16 = EN_SETFOCUS && gotFocus[1] := lp" и как оно относиться к графическому интерфейсу.))

20

Re: AHK: Последний активный Edit в Gui

shahlik002 пишет:

но оно полностью изменяет текст

В моем же примере ничего не меняет, видимо, неправильно что-то делаете, приведите свой код, демонстрирующий проблему.

в переменной хранит какой-то набор циферок.

Этот набор циферок — хэндл последнего активного Edit'а, с ControlSend можно использовать через ahk_id.

где мне найти справку на эти мудреные команды ,которые вы используете?

Справка AHK — только по синтаксису AHK, а за остальным добро пожаловать в MSDN. В частности WM_COMMAND и EN_SETFOCUS.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder