Тема: AHK: Переход назад в проводнике двойным кликом мыши
Бьюсь уже очень давно над этой задачей, получается не очень.
Вот боле менее рабочий код:
#SingleInstance,Force
AutoTrim,Off
CoordMode,Mouse,Screen
CoordMode,ToolTip
CoordMode,Pixel
Menu,Tray,UseErrorLevel
process,priority,,abovenormal
SendMode,Input
SetBatchLines,-1
SetControlDelay,0
SetFormat,float,6.0
SetKeyDelay,0
SetTitleMatchMode,2
SetWinDelay,20
SetWorkingDir,%A_ScriptDir%
StringCaseSense,On
DoubleClicksetTime:=DllCall("GetDoubleClickTime")
loop
{
sleep,50
if DubleClickDone=1
{
; sleep,100
if (Classs ~= "(Cabinet|Explore)WClass")
{
if SelectedFiles=
{
DubleClickDo=1
send,{bs}
}
}
DubleClickDone=
}
;tooltip,"%DubleClickDone%"`n"%SelectedFiles%"
}
~LButton::
MouseGetPos,oldmx,oldmy,mwin,mctrl
;WinGetTitle,title,ahk_id %mwin%
WinGetClass,classs,ahk_id %mwin%
keywait,LButton,L
If (DubleClickDo="" and DubleClickDone="" and A_TimeSincePriorHotkey<DoubleClicksetTime and A_ThisHotkey=A_PriorHotkey)
DubleClickDone=1
else
{
DubleClickDo=
SelectedFiles:=GetSelectedFiles()
}
return
GetSelectedFiles(hwnd="")
{
if (hwnd = "")
WinGet, hwnd,, A
objShell := ComObjCreate("Shell.Application")
for window in objShell.Windows
if (window.hwnd = hwnd && ShellWindow := 1)
Break
if !ShellWindow
return
for item in window.document.SelectedItems
ret .= item.path . "`n"
Return SubStr(ret, 1, -1)
}
(Были варианты без цикла, но тоже плохо работали.)
Но в нем несколько проблем. При быстрых кликах иногда выскакивает ошибка:
Error: 0x80004001 - He поддерживается
Source: (null)
Description: (null)
HelpFile: (null)
HelpContext: 0
Specifically: document
LineS
096 WinGet,hwnd„A
097 objShell := ComObjCreate("Shell. Application")
098 For window, in objShell.Windows
099 if (window, hwnd = hwnd && Shell Window := 1)
100 Break
101 if! Shell Window
102 Return
—> 103 For item, in window.document.Selectedltems
104 ret .= item.path ."
Continue running the script?
Заметил что ошибка эта происходит при закрытии окна проводника в котором работал.
И если перед двойным кликом был выделен какой-нибудь объект, то перехода назад не происходит.
Прошу помощи.