1

Тема: AHK: Быстрое меню

Суть такая: хочется, чтобы при нажатии, например, пуск-средней кнопки, выфигачивалась менюшка типа такой http://i10.fastpic.ru/big/2010/1006/15/5844761661ea41ccf86709cabc73dd15.jpg
причём так, чтобы мышь была посередине. (Либо мышь пихнуть в центр экрана, либо менюшку приурочить к мыши), а при отжатии, делалось

Run, http://Theadress.com

если мышь была на картинке.
Пытался сделать с помощью GUI, но, так как не разобрался в этом, получается нелицеприятный вид и громоздкий код.
Собственно вопросы, как сделать по цивильному "при нажатии" и "при отжатии", и как создать такую менюшку

2

Re: AHK: Быстрое меню

Начните разбираться с этого.

Gui, Add, Picture, x20 y20 w100 h100 gS001, C:\windows\winnt.bmp
Gui, Show, x131 y91 h377 w477, New GUI Window
Return

S001:
Run, http://Theadress.com
Return

3 (изменено: funtaps, 2010-10-06 10:58:47)

Re: AHK: Быстрое меню

Спасибо большое!
Но осталась пара вопросов:
Как сделать, чтобы при нажатии оконо показывалось, а при отжатии закрывалось?
И событие, соответственно должны выполнятся не по клику мышки, а при отжатии кнопки в зависимости от того, где стоит мышка.
Код сейчас:

#MButton::
Gui, +AlwaysOnTop -SysMenu -Caption
Gui, Color, 2F7B80
Gui, Add, Picture, x20 y20 w200 h200 gPTwit, R:\Gadget\AHK\Quiklink\twitter.jpg
Gui, Add, Picture, x240 y20 w200 h200 gPVk, R:\Gadget\AHK\Quiklink\vkontakte.jpg
Gui, Add, Picture, x460 y20 w200 h200 gPRut, R:\Gadget\AHK\Quiklink\rutracker.jpg
Gui, Add, Picture, x20 y240 w200 h200 gPFto, R:\Gadget\AHK\Quiklink\fto.jpg
Gui, Add, Picture, x460 y240 w200 h200 gPGoog, R:\Gadget\AHK\Quiklink\google.jpg
Gui, Add, Picture, x20 y460 w200 h200 gPYand, R:\Gadget\AHK\Quiklink\yandex.jpg
Gui, Add, Picture, x240 y460 w200 h200 gPLast, R:\Gadget\AHK\Quiklink\lastfm.jpg
Gui, Add, Picture, x460 y460 w200 h200 gPBee, R:\Gadget\AHK\Quiklink\beeline.jpg

CoordMode, Mouse, Screen
MouseMove, (A_ScreenWidth/2), (A_ScreenHeight/2)
CoordMode, Mouse, Relative

Gui, Show,Center h680 w680, Quick Link Menu
return

PTwit:
Run http://twitter.com
Gui, Destroy
return
PVk:
Run http://vkontakte.ru
Gui, Destroy
return
PRut:
Run http://rutracker.org
Gui, Destroy
return
PFto:
Run http://free-torrents.org
Gui, Destroy
return
PGoog:
Run http://google.com
Gui, Destroy
return
PYand:
Run http://yandex.ru
Gui, Destroy
return
PLast:
Run http://www.lastfm.ru/user/funtaps/charts?rangetype=week&subtype=tracks
Gui, Destroy
return
PBee:
Run http://www.beeline.ru/sms/index.wbp
Gui, Destroy
return

return

4

Re: AHK: Быстрое меню

Необязательно загружать восемь картинок, достаточно загрузить одну целиком, которая выглядит, как в первом посте. Метка перехода не нужна. Затем назначить горячую клавишу MBUtton Up:: на проверку координат курсора, закрытие окна и вызова нужного адреса, в зависимости от полученных координат.

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

5 (изменено: funtaps, 2010-10-06 13:33:58)

Re: AHK: Быстрое меню

Благодаря teadrinker написал такую штуку:

MButton & LButton::
Gui, +AlwaysOnTop -SysMenu -Caption
/*
Gui, Color, 2F7B80
Gui, Add, Picture, x20 y20 w200 h200, R:\Gadget\AHK\Quiklink\twitter.jpg
Gui, Add, Picture, x240 y20 w200 h200, R:\Gadget\AHK\Quiklink\vkontakte.jpg
Gui, Add, Picture, x460 y20 w200 h200, R:\Gadget\AHK\Quiklink\rutracker.jpg
Gui, Add, Picture, x20 y240 w200 h200, R:\Gadget\AHK\Quiklink\fto.jpg
Gui, Add, Picture, x460 y240 w200 h200, R:\Gadget\AHK\Quiklink\google.jpg
Gui, Add, Picture, x20 y460 w200 h200, R:\Gadget\AHK\Quiklink\yandex.jpg
Gui, Add, Picture, x240 y460 w200 h200, R:\Gadget\AHK\Quiklink\lastfm.jpg
Gui, Add, Picture, x460 y460 w200 h200, R:\Gadget\AHK\Quiklink\beeline.jpg
*/
Gui, Add, Picture, x0 y0 w680 h680, R:\Gadget\AHK\Quiklink\bg.jpg
CoordMode, Mouse, Screen
MouseMove, (A_ScreenWidth/2), (A_ScreenHeight/2)
CoordMode, Mouse, Relative

Gui, Show,Center h680 w680, Quick Link Menu
return

return

MButton & LButton UP::
MouseGetPos, mouse_x, mouse_y
Gui, Destroy
if(mouse_x>10&&mouse_x<670&&mouse_y>10&&mouse_y<670){
if(mouse_y<230){
if(mouse_x<230){
Run, http://twitter.com
}
else if(mouse_x<460){
Run, http://vkontakte.ru
}
else{
Run, http://rutracker.org
}
}
else if(mouse_y<460){
if(mouse_x<230){
Run, http://free-torrents.org
}
else if(mouse_x>460){
Run, http://google.com
}
}
else{
if(mouse_x<230){
Run, http://yandex.ru
}
else if(mouse_x<460){
Run, http://www.lastfm.ru/user/funtaps/charts?rangetype=week&subtype=tracks
}
else{
Run, http://www.beeline.ru/sms/index.wbp
}
}
}
return

Долго возился с MouseGetPos - там есть выходная переменная OutputVarControl
Может можно сделать, чтобы она определяла над какой картинкой (если делать восемь картинок, а не одну) сейчас мышка.
Мне бы хотелось функцию привязывать не к координате мышки, а к картинке, чтобы можно было удобнее настраивать менюшку: поменял местами две картинки, например, и функции соответственно тоже нормально работают.

6 (изменено: teadrinker, 2010-10-06 15:01:11)

Re: AHK: Быстрое меню

В параметрах картинок указываешь переменные, в которых будут сохраняться их идентификаторы — hwndVar1 — hwndVar8, в команде MouseGetPos указываешь переменную, в которой будет сохраняться идентификатор контрола, затем сравниваешь. Пример:

   Gui, Add, Text, +0x6 x0 y0 w100 h100 hwndWhite
   Gui, Add, Text, +0x4 x100 y0 w100 h100 hwndBlack
   Gui, Show, w200 h100
   Return

MButton Up::
   MouseGetPos,,,, VarControl, 2
   if (VarControl = White)
      MsgBox Белый квадрат
   if (VarControl = Black)
      MsgBox Чёрный квадрат
   Return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

7

Re: AHK: Быстрое меню

а swtch в AHK нету?

8

Re: AHK: Быстрое меню

Вот всё, что есть на сегодняшний день.

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

9

Re: AHK: Быстрое меню

Всем спасибо!=)
Теперь я доволен, ибо можно легко из этого сделать нормальный скрипт, который обычный пользователь настроит. Можно даже простинькие настройки прифигачить, так как надо заполнить только два массива. Спасибо

MButton & LButton::
Gui, +AlwaysOnTop -SysMenu -Caption
Gui, Color, 003867
ql_img1:="twitter.jpg"
ql_img2:="vkontakte.jpg"
ql_img3:="rutracker.jpg"
ql_img4:="fto.jpg"
ql_img5:="empty"
ql_img6:="google.jpg"
ql_img7:="yandex.jpg"
ql_img8:="lastfm.jpg"
ql_img9:="beeline.jpg"

Loop, 9{
the_pic:=ql_img%A_Index%
if(the_pic!="empty"){
aind:=A_Index-1
the_ind:=aind
the_ind/=3
ostatok:=aind-(the_ind*3)
the_x:=1+(ostatok*101)
the_y:=1+(the_ind*101)
Gui, Add, Picture, x%the_x% y%the_y% w100 h100 hwndP%A_Index%, R:\Gadget\AHK\Quiklink\%the_pic%
}
}
CoordMode, Mouse, Screen
MouseMove, (A_ScreenWidth/2), (A_ScreenHeight/2)
CoordMode, Mouse, Relative

Gui, Show,Center h306 w306, Quick Link Menu
return

return

MButton & LButton UP::
ql_link1=http://twitter.com
ql_link2=http://vkontakte.ru
ql_link3=http://rutracker.org
ql_link4=http://free-torrents.org
ql_link5=
ql_link6=http://google.com
ql_link7=http://yandex.ru
ql_link8=http://www.lastfm.ru/user/funtaps/charts?rangetype=week&subtype=tracks
ql_link9=http://www.beeline.ru/sms/index.wbp
MouseGetPos,,,, VarControl, 2
Gui, Destroy
Loop, 9{
if(VarControl = P%A_index%){
the_link:=ql_link%A_Index%
Run, %the_link%
}
}
return