1

Тема: AHK:Открыть выделенную папку средней кнопкой мыши

Доброго времени суток. Есть скрипт на открытие средней кнопкой мыши файла с расширением  "ahk", как бы туда добавить ещё открытие папки.

~*$vk4::
Sleep, 60
Click
WinClose ahk_class #32768 ahk_exe explorer.exe
If (path := Explorer_GetSel()) && (RegExMatch(path, "i)\.ahk$"))
Run C:\Program Files (x86)\AkelPad\AkelPad.exe %path%
Else
SendInput % "{" A_ThisHotkey "}"
Double:
Double := 0
return
#If
Explorer_GetSel()
{
if !(window := Explorer_GetWindow())
return ""
if (window="desktop")
{
ControlGet, hwWindow, HWND,, SysListView321, ahk_class Progman
if !hwWindow
ControlGet, hwWindow, HWND,, SysListView321, A
ControlGet, files, List, % "Selected Col1",, ahk_id %hwWindow%
base := SubStr(A_Desktop,0,1)=="\" ? SubStr(A_Desktop,1,-1) : A_Desktop
Loop, Parse, files, `n, `r
{
path := base "\" A_LoopField
IfExist %path%
ret .= path "`n"
}
}
else
{
collection := window.document.SelectedItems
for item in collection
ret .= item.path "`n"
}
return Trim(ret,"`n")
}
Explorer_GetWindow()
{
WinGetClass class, % "ahk_id" hwnd := WinExist("A")
if (class ~= "(Cabinet|Explore)WClass")
{
for window in ComObjCreate("Shell.Application").Windows
if (window.hwnd==hwnd)
return window
}
else if (class ~= "Progman|WorkerW")
return "desktop"
}
return
OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

2 (изменено: svoboden, 2017-07-24 19:33:47)

Re: AHK:Открыть выделенную папку средней кнопкой мыши

MButton::
Sleep, 60
Click
WinClose ahk_class #32768 ahk_exe explorer.exe
If (path := Explorer_GetSel()) && (RegExMatch(path, "i)\.ahk$"))
Run C:\Windows\notepad.exe %path%
else If Explorer_GetSel()
    SendInput {Enter}
else
    SendInput {MButton}
return
#If
Explorer_GetSel()
{
if !(window := Explorer_GetWindow())
return ""
if (window="desktop")
{
ControlGet, hwWindow, HWND,, SysListView321, ahk_class Progman
if !hwWindow
ControlGet, hwWindow, HWND,, SysListView321, A
ControlGet, files, List, % "Selected Col1",, ahk_id %hwWindow%
base := SubStr(A_Desktop,0,1)=="\" ? SubStr(A_Desktop,1,-1) : A_Desktop
Loop, Parse, files, `n, `r
{
path := base "\" A_LoopField
IfExist %path%
ret .= path "`n"
}
}
else
{
collection := window.document.SelectedItems
for item in collection
ret .= item.path "`n"
}
return Trim(ret,"`n")
}
Explorer_GetWindow()
{
WinGetClass class, % "ahk_id" hwnd := WinExist("A")
if (class ~= "(Cabinet|Explore)WClass")
{
for window in ComObjCreate("Shell.Application").Windows
if (window.hwnd==hwnd)
return window
}
else if (class ~= "Progman|WorkerW")
return "desktop"
}
return

3

Re: AHK:Открыть выделенную папку средней кнопкой мыши

Всё работает ,а как бы сделать что бы ещё и ярлыки папок открывало.

OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

4 (изменено: svoboden, 2017-05-02 04:40:12)

Re: AHK:Открыть выделенную папку средней кнопкой мыши

Вроде вопрос только про папки был. Ну ладно, тогда вместо этого: "else If Explorer_GetSel()", пиши: "else If WinActive("ahk_class Progman") or WinActive("ahk_class CabinetWClass")".

5

Re: AHK:Открыть выделенную папку средней кнопкой мыши

Доброго времени суток. Подскажите пожалуйста как добавить помимо "ahk" ещё и "txt" расширение.
Я так думаю что это нужно сделать здесь, но только ни как не пойму.

If (path := Explorer_GetSel()) && (RegExMatch(path, "i)\.ahk$"))
MButton::
Sleep, 60
Click
WinClose ahk_class #32768 ahk_exe explorer.exe
If (path := Explorer_GetSel()) && (RegExMatch(path, "i)\.ahk$"))
Run C:\Windows\notepad.exe %path%
else If Explorer_GetSel()
    SendInput {Enter}
else
    SendInput {MButton}
return
#If
Explorer_GetSel()
{
if !(window := Explorer_GetWindow())
return ""
if (window="desktop")
{
ControlGet, hwWindow, HWND,, SysListView321, ahk_class Progman
if !hwWindow
ControlGet, hwWindow, HWND,, SysListView321, A
ControlGet, files, List, % "Selected Col1",, ahk_id %hwWindow%
base := SubStr(A_Desktop,0,1)=="\" ? SubStr(A_Desktop,1,-1) : A_Desktop
Loop, Parse, files, `n, `r
{
path := base "\" A_LoopField
IfExist %path%
ret .= path "`n"
}
}
else
{
collection := window.document.SelectedItems
for item in collection
ret .= item.path "`n"
}
return Trim(ret,"`n")
}
Explorer_GetWindow()
{
WinGetClass class, % "ahk_id" hwnd := WinExist("A")
if (class ~= "(Cabinet|Explore)WClass")
{
for window in ComObjCreate("Shell.Application").Windows
if (window.hwnd==hwnd)
return window
}
else if (class ~= "Progman|WorkerW")
return "desktop"
}
return
OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

6 (изменено: svoboden, 2017-10-30 05:16:51)

Re: AHK:Открыть выделенную папку средней кнопкой мыши

If (path := Explorer_GetSel()) && (RegExMatch(path, "i)\.ahk$")) or (RegExMatch(path, "i)\.txt$"))

7 (изменено: Ядрён, 2023-02-08 03:35:53)

Re: AHK:Открыть выделенную папку средней кнопкой мыши

Доброго времени суток. Подскажите пожалуйста как сделать что бы в стороннем приложении (сторонний проводник) тоже работало.

ahk_class dopus.lister
ahk_exe dopus.exe
ahk_pid 9064

При добавлении этого не работает.

else If WinActive("ahk_class Progman") or WinActive("ahk_class CabinetWClass") or WinActive("ahk_class dopus.lister")
vk4::
Sleep, 60
Click
WinClose ahk_class #32768 ahk_exe explorer.exe
If (path := Explorer_GetSel()) && (RegExMatch(path, "i)\.ahk$")) or (RegExMatch(path, "i)\.au3$"))
Run C:\Program Files\AkelPad\AkelPad.exe %path%
 else If WinActive("ahk_class Progman") or WinActive("ahk_class CabinetWClass") or WinActive("ahk_class dopus.lister")
   SendInput {vkD}
else
SendInput % "{" A_ThisHotkey "}"
  return

#If
Explorer_GetSel()

{
if !(window := Explorer_GetWindow())
return ""
if (window="desktop")

{
ControlGet, hwWindow, HWND,, SysListView321, ahk_class Progman 
if !hwWindow
ControlGet, hwWindow, HWND,, SysListView321, A
ControlGet, files, List, % "Selected Col1",, ahk_id %hwWindow%
base := SubStr(A_Desktop,0,1)=="\" ? SubStr(A_Desktop,1,-1) : A_Desktop
Loop, Parse, files, `n, `r
{
path := base "\" A_LoopField
IfExist %path%
ret .= path "`n"
}
}
else
{
collection := window.document.SelectedItems
for item in collection
ret .= item.path "`n"
}
return Trim(ret,"`n")
}
Explorer_GetWindow()
{
WinGetClass class, % "ahk_id" hwnd := WinExist("A")
if (class ~= "(Cabinet|Explore|)WClass")
{
for window in ComObjCreate("Shell.Application").Windows
if (window.hwnd==hwnd)
return window
}
else if (class ~= "Progman|WorkerW|")
return "desktop"
}
return
OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

8

Re: AHK:Открыть выделенную папку средней кнопкой мыши

Приведённый код никак не поможет, он только для проводника. Вы пользуетесь приложением, вот вы и исследуйте, потом результат сюда выложите.

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

9

Re: AHK:Открыть выделенную папку средней кнопкой мыши

Уважаемый teadrinker пните хоть куда смотреть то.

OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

10

Re: AHK:Открыть выделенную папку средней кнопкой мыши

Так у меня нет этого приложения, не могу никуда пнуть.

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