1

Тема: AHK: Условие размещения контрола

Необходимо условие работы горячей клавиши в области определенного контрола, имя которого часто меняется, однако не меняется его положение относительно стороны окна. Размер контрола также может меняться, поэтому, задание работы клавиши в определенных координатах окна не подходит.
Исходя из этого появилась необходимость сделать проверку на то, что контрол, находящийся под курсорром, также попадает в левую часть окна, например, в первые 50 пикселей от левой границы окна. Для другой клавиши необходимо то же, но уже относительно нижней стороны окна. Как это можно сделать?

2

Re: AHK: Условие размещения контрола

becauseim пишет:

однако не меняется его положение относительно стороны окна

А просто посмотреть начальную точку контрола что под фокусом не подойдет?
И если координаты у тех контролов нужные то делаем действие.
скрипт проверяет на F1

Gui, Add, Progress,x10 y10 w200 h50 hwndMyctrlRandom1 BackgroundRed 
Gui, Add, Progress,x10 y10 w50 h100 hwndMyctrlRandom2 Hidden BackgroundBlue
Gui, Add, Progress,x10 y10 w300 h200 hwndMyctrlRandom3 Hidden BackgroundGreen
Gui,add, Button,grandom_ctrl_Label x200 y450,Random ctrl
Gui,Show,w500 h500
Return

random_ctrl_Label:
loop 3
GuiControl,Hide, % MyctrlRandom%A_Index%
Random,r,1,3
Random,w,30,490
Random,h,30,290

GuiControl,Move,% MyctrlRandom%r%, w%w% h%h%
GuiControl,Show,% MyctrlRandom%r%
Return 


;====

F1::
MouseGetPos,,,,ctrl,2
ControlGetPos,xCtrl,yCtrl,,,,ahk_id %ctrl%
ToolTip % xCtrl "`n" yCtrl

3

Re: AHK: Условие размещения контрола

Можно еще попробовать определить название контрола либо какого-нибудь выделенного элемента по включенным-выключенным пунктам меню.

4

Re: AHK: Условие размещения контрола

yalanne, пока не знаю, подходит такой метод или нет.
Например, так при нажатии на F1 над нужным контролом выходит тултип http://puu.sh/puG98/3e83fbbbe0.png.

F1::
MouseGetPos,,,,ctrl,2
ControlGetPos,xCtrl,yCtrl,,,,ahk_id %ctrl%
ToolTip % xCtrl "`n" yCtrl

А как из этого сделать условие?

5

Re: AHK: Условие размещения контрола

F1::
MouseGetPos,,,,ctrl,2
ControlGetPos,xCtrl,yCtrl,,,,ahk_id %ctrl%
if (xCtrl = 10) and (yCtrl = 80)
	msgbox 1

6

Re: AHK: Условие размещения контрола

yalanne, спасибо, работает!

control()
{
	MouseGetPos,,,, Ctrl, 2
	ControlGetPos, xCtrl, yCtrl,,,, ahk_id %ctrl%
	if (xCtrl = 10) and (yCtrl = 80)
		{
			return !ErrorLevel
		}
}
#if control()
1:: ToolTip, 1

Однако не работает при скрытой панели меню. Можно ли как-то избежать конфликта? Или подскажите, пожалуйста, как задать условие, что панель скрыта? Так я смогу задать альтернативное значение xCtrl и yCtrl.