1 (изменено: tregalka, 2016-03-01 12:46:08)

Тема: AHK: Свое контекстное меню

Можно ли в AutoHotkey сделать так, чтобы при нажатии горячих клавиш появлялось свое контекстное меню (или маленькое окно с выбором).
Потом перейти в нужную папку (которые, содержаться в меню).

Может есть шаблон, готового контекстного меню!?
Если есть похожая тема, дайте ссылку!
Спасибо!

2

Re: AHK: Свое контекстное меню

Всё-таки контекстное меню или окно с выбором?
Расставьте точки в конце предложений.

3

Re: AHK: Свое контекстное меню

ypppu

Без разницы, подскажите, что будет проще!?
Главное чтобы можно было вызвать по горячей клавиши, и перейти с помощью него в нужную папку!

4 (изменено: ypppu, 2016-03-01 14:43:10)

Re: AHK: Свое контекстное меню

GUI, Add, Button, g1, Мой компьютер
GUI, Add, Button, g2, Программы
GUI, Add, Button, g3, Рабочий стол
GUI, Add, Button, g4, Мои документы
Return

F1:: GUI, Show
F1 up:: GUI, Hide

1:
Run ::{20d04fe0-3aea-1069-a2d8-08002b30309d}
Return
2:
Run, explore %A_ProgramFiles%
Return
3:
Run, %A_Desktop%
Return
4:
Run, %A_MyDocuments%
Return

5 (изменено: tregalka, 2016-03-01 13:34:05)

Re: AHK: Свое контекстное меню

ypppu

Окно то что нужно!!!
Почему то папки открываются только когда мышкой кликаешь, а если клавишами (вверх, вниз) то не открываются, должно открываться с помощью клавиш?

6

Re: AHK: Свое контекстное меню

В смысле? Я и рассчитывал на использование мышки. Но есть и альтернативный вариант - клавишами

←↑↓→

переключаться между кнопками, а сами кнопки нажимать при помощи Enter или Space. По умолчанию выделена первая кнопка.

7 (изменено: tregalka, 2016-03-01 13:54:58)

Re: AHK: Свое контекстное меню

ypppu

Ага! Все отлично работает!
Много замарочек, сделать так чтобы без enter или space, на какую папку выбор упал, та сразу и открылась!?
Чтобы после выбора F1 отпустить и она открылась!

8

Re: AHK: Свое контекстное меню

Как понимать "выбор упал"? Скрипт мысли не читает.

9

Re: AHK: Свое контекстное меню

Можно ли в AutoHotkey сделать так, чтобы при нажатии горячих клавиш появлялось свое контекстное меню

https://autohotkey.com/docs/commands/Menu.htm

10

Re: AHK: Свое контекстное меню

ypppu


При нажатии ←↑↓→ папка (выбранная) подсвечиваются, когда перестал нажимать, отпустил F1, и та папка которая была подсвечена открывается!

11

Re: AHK: Свое контекстное меню

Можно заставить скрипт нажимать Space:

GUI, Add, Button, g1, Мой компьютер
GUI, Add, Button, g2, Программы
GUI, Add, Button, g3, Рабочий стол
GUI, Add, Button, g4, Мои документы
Return

F1:: GUI, Show
F1 up::
Send, {Space}
GUI, Hide
Return

1:
Run ::{20d04fe0-3aea-1069-a2d8-08002b30309d}
Return
2:
Run, %A_ProgramFiles%
Return
3:
Run, %A_Desktop%
Return
4:
Run, %A_MyDocuments%
Return

12

Re: AHK: Свое контекстное меню

ypppu

Спасибо Брат!!!

13 (изменено: tregalka, 2016-03-01 18:41:46)

Re: AHK: Свое контекстное меню

ypppu

Знаю что совершенству нет предела, но все же! .
Можно сделать так, чтобы выбор папки был с помощью колеса мыши (← →) !?

14

Re: AHK: Свое контекстное меню

#HotkeyInterval 0
GUI, +HwndMyGui
GUI, Add, Button, g1, Мой компьютер
GUI, Add, Button, g2, Программы
GUI, Add, Button, g3, Рабочий стол
GUI, Add, Button, g4, Мои документы
Return

#if WinActive("ahk_id" MyGui)
WheelDown::Send {Right}
WheelUp::Send {Left}
#if

F1:: GUI, Show
F1 up::
Send, {Space}
GUI, Hide
Return

1:
Run ::{20d04fe0-3aea-1069-a2d8-08002b30309d}
Return
2:
Run, %A_ProgramFiles%
Return
3:
Run, %A_Desktop%
Return
4:
Run, %A_MyDocuments%
Return

15

Re: AHK: Свое контекстное меню

yalanne От Души! Братишка!

16

Re: AHK: Свое контекстное меню

yalanne
Можно сделать так:
Я указал в скрипте папку, а при вызове окна - в нем отображались подпапки которые в ней лежат!

17

Re: AHK: Свое контекстное меню

Окно активно пока зажата F1. Колесиком мыши можно листать верх,вниз. Если нажать его то откроется вкладка. Правая кнопка - это закрыть вкладку. Внутри окна левая кнопка мыши работает стандартно, а если нажать за пределами то это закроет окно и вызов папки будет отменен - это отмена.

; Список нужных папок.
List_paths := [ ["Мой компьютер" , "::{20d04fe0-3aea-1069-a2d8-08002b30309d}"]
              , ["Программы"     , A_ProgramFiles ]
              , ["Рабочий стол"  , A_Desktop ]
              , ["Мои документы" , A_MyDocuments ] ]


; Загружаем 2 иконки из shell32.
ImageListID := IL_Create(2)  ,  IL_Add(ImageListID, "shell32.dll", 4),  IL_Add(ImageListID, "shell32.dll", 127)


; Клавиша запуска окна(держать)
F1::
; Настройки окна
ExitGui := 0
Gui, Add, TreeView, ImageList%ImageListID% gTVLabel -HScroll 
Gui, +HWNDFastFoldersGui  +ToolWindow
TreeViewO := {parrent:[]}
;Создаем список из папок и их подпапок.
for i,k in List_paths
{
  TreeViewO.Insert("sub" i ,[])
  TreeViewO.parrent.Insert( TV_Add(k.1) )
  Loop, Files,% k.2 "/*.*",D
    TreeViewO["sub" i ].Insert(TV_Add(A_LoopFileName,TreeViewO.parrent[i]))
  if TreeViewO["sub" i ].MaxIndex()
    TV_Modify(TreeViewO.parrent[i],"Icon2")
}

Gui show,AutoSize,FastFolder
; ждем отжатия кнопки.
KeyWait, % A_ThisHotkey
Gui,Destroy
ToolTip
if !ExitGui
Run % PathOpen
return

; на эту метку скрипт ссылается если в списке сменился элемент в фокусе.
; Тут назначается путь папки в переменную для запуска через run.
TVLabel:
TV_GetText(textItemSelectP, TV_GetParent( TV_GetSelection())), TV_GetText(textItemSelectS, TV_GetSelection())
IfEqual,textItemSelectP,,Try textItemSelectP := textItemSelectS,textItemSelectS := ""
for i,k in List_paths
  if k.1 = textItemSelectP
    PathOpen := k.2 (textItemSelectS ? "\" textItemSelectS : "")
ToolTip % "Открыть: " PathOpen
return

; Если это условие истина значит окно наше активно, по этому меняем некоторые клавиши для управления этим окном.
#if WinActive("ahk_id" FastFoldersGui)
Rbutton::send {left 2}
mbutton::right
WheelDown::down
WheelUp::up
~lbutton:: ; если кликнуть не на это окно то отмена, папка не будет вызвана.
MouseGetPos,,,id
if (id = FastFoldersGui)
  return
ExitGui := 1
Gui,Destroy
ToolTip
return
#if

18

Re: AHK: Свое контекстное меню

yalanne
Получилось даже лучше, чем я хотел!
От Души! Братишка!

19 (изменено: tregalka, 2016-03-10 09:04:54)

Re: AHK: Свое контекстное меню

yalanne
Не могу разобраться, как назначить свои папки в связке с переменной все время ошибки выдает
Понял что нужно это прописывать где стоит комментарий:
; Тут назначается путь папки в переменную для запуска через run.
только как прописывать не понял).
Когда пишешь просто полный путь вверху, все работает!

20

Re: AHK: Свое контекстное меню

Список нужных папок задается в самом верху скрипта. Вот пример с 'C:\новая папка'.

List_paths := [ ["Мой компьютер" , "::{20d04fe0-3aea-1069-a2d8-08002b30309d}"]
              , ["Программы"     , A_ProgramFiles ]
              , ["Рабочий стол"  , A_Desktop ]
              , ["Мои документы" , A_MyDocuments ] 
              , ["любое имя" , "C:\новая папка"] ]

Когда пишешь просто полный путь вверху, все работает!

Так и планировалось.

21

Re: AHK: Свое контекстное меню

yalanne

Тогда получается, что в пути имя пользователя, а как прописать без имени с переменной, чтобы не было привязки к пользователю!