#NoEnv #NoTrayIcon SetWorkingDir %A_ScriptDir% #SingleInstance, force SetTitleMatchMode, 2 SetTitleMatchMode, Slow SetKeyDelay 50, 50 DetectHiddenWindows On CoordMode Mouse CoordMode ToolTip If !FileExist("dc_loader.ini") FileAppend [Main]`r`ncmd=`r`n# Параметры командной строки doublecmd.exe`r`ncmd_shift=`r`n# То же с зажатым Shift при запуске`r`npad=0`r`n# Режим планшета с коррекцией двойных нажатий и контекстным меню по длинному и короткому нажатию`r`nfreze_time=150`r`n# Время "подмораживания" мыши при одиночном клике`, мс (0 или pad=1 - выключение функции)`r`ndclick_time=600`r`n# Максимальный интервал двойного тапа на планшете`, мс`r`ndclick_delta=20`r`n# Максимальный разброс положения курсора при двойном тапе`, пикселей`r`nmbutton=2`r`n# Назначение среднего клика мыши (1 - на уровернь вверх`, 2 - двойной клик`, 3 - F3`, 4 - F4`, 0 - по умолчанию)`r`nctrl_mbutton=4`r`n# То же с зажатым Ctrl`r`nhotkey=1`r`n# Использование сочетания Ctrl+`` для активации и скрытия окна программы`r`nf1=https://skif-off.github.io/doublecmd.github.io/doc/ru/index.html`r`n# url или файл с абсолютным или относительным путем`, открывающийся по F1`r`nf4menu_ini=`r`n# Путь к F4Menu.ini`, абсолютный или относительный (без начального бэкслэша!), dc_loader.ini, CP1251 IniRead cmd, dc_loader.ini, Main, cmd IniRead cmd_shift, dc_loader.ini, Main, cmd_shift IniRead f1, dc_loader.ini, Main, f1 IniRead pad, dc_loader.ini, Main, pad IniRead freze_time, dc_loader.ini, Main, freze_time IniRead dclick_time, dc_loader.ini, Main, dclick_time IniRead dclick_delta, dc_loader.ini, Main, dclick_delta IniRead mbutton, dc_loader.ini, Main, mbutton IniRead ctrl_mbutton, dc_loader.ini, Main, ctrl_mbutton IniRead hotkey, dc_loader.ini, Main, hotkey IniRead f4menu_ini, dc_loader.ini, Main, f4menu_ini Loop %0% { p:=%A_Index% If (p~="^[a-zA-Z]:") p="%p%" par.=" " p } Sleep 50 If GetKeyState("Shift","P") par:=((cmd_shift="") ? "" : " " cmd_shift) . par else If cmd par:=((cmd="") ? "" : " " cmd) . par Run % "doublecmd.exe" par WinWait ahk_class DClass ahk_exe doublecmd.exe, , 5 WinActivate If f4menu_ini && FileExist(f4menu_ini) { FileRead f4, % f4menu_ini f4:=StrReplace(f4,A_ScriptDir,"%COMMANDER_PATH%",r1) f4:=StrReplace(f4,RegExReplace(A_ScriptDir,"[a-zA-Z]:\K.*"),"%COMMANDER_DRIVE%",r2) If r1 || r2 { FileMove % f4menu_ini, % RegExReplace(f4menu_ini,"\.ini$") "_" A_Now ".ini" FileAppend % f4, % f4menu_ini, CP1251 } } Loop { Sleep 50 If WinActive("ahk_class DClass ahk_exe doublecmd.exe") hwnd:=WinActive("A") WinGet list, List, ahk_class DClass ahk_exe doublecmd.exe win_n:=0 Loop % list { id:=list%A_Index% WinGet pr_path, ProcessPath, % "ahk_id" id If pr_path contains % A_ScriptDir win_n+=1 } If !win_n ExitApp } #If WinActive("ahk_class DClass ahk_exe doublecmd.exe") && !(GetKeyState("Ctrl","P") || GetKeyState("Shift","P") || GetKeyState("Alt","P")) && OnDC() $LButton:: MouseGetPos x_start, y_start If (A_PriorHotkey="$LButton") && (A_TimeSincePriorHotkey<dclick_time) && (Sqrt((x_start-x_old)**2+(y_start-y_old)**2)<dclick_delta) && pad && prep { Sleep 25 Send {LButton up} Sleep 50 MouseClick left, % x_old, % y_old, ,0 prep:=0 return } If (A_PriorHotkey="~RButton") && (A_TimeSincePriorHotkey<1100) && (Sqrt((x_start-x_old)**2+(y_start-y_old)**2)<dclick_delta) && pad { Sleep 100 Send ^{NumpadSub} Sleep 100 MouseMove % x_old, % y_old, 0 Send {AppsKey} return } MouseGetPos x_old, y_old Send {LButton down} If freze_time && !pad { BlockInput MouseMove m:=freze_time While GetKeyState("LButton","P") && (m>0) { m-=5 Sleep 5 } BlockInput MouseMoveOff } KeyWait LButton Send {LButton up} prep:=1 return #If !WinActive("ahk_class DClass ahk_exe doublecmd.exe") && hotkey ^vkC0:: WinActivate ahk_id %hwnd% #If WinActive("ahk_class DClass ahk_exe doublecmd.exe") && hotkey ^vkC0::WinMinimize A #If WinActive("ahk_class DClass ahk_exe doublecmd.exe") && f1 F1::Run % f1 #If WinActive("ahk_class DClass ahk_exe doublecmd.exe") +RButton:: KeyWait RButton, T1 KeyWait Shift, T1 Send ^{NumpadSub}{LButton} Sleep 100 Send ^{vk43} path:=Clipboard SplitPath path, file Run %comspec% /c ""Explorer" "/select"`, "%path%"", ,Hide WinWaitActive ahk_exe explorer.exe, , 2 id:=WinActive() Send {AppsKey} WinWait ahk_class #32768 ahk_exe explorer.exe, , 1 WinGetPos x, y MouseMove % x+10, % y+20, 0 ToolTip % file,% x+10, % y-20 WinWaitClose WinClose ahk_id %id% ToolTip return #If WinActive("ahk_class DClass ahk_exe doublecmd.exe") && OnDC() ~RButton:: MouseGetPos x_old, y_old return XButton1::Send !{Left} XButton2::Send !{Right} MButton:: KeyWait MButton If mbutton=1 Send {Bs} If mbutton=2 Send {LButton 2} If mbutton=3 Send {LButton}{F3} If mbutton=4 Send {LButton}{F4} If !mbutton Send {MButton} return ^MButton:: KeyWait MButton KeyWait Ctrl If ctrl_mbutton=1 Send {Bs} If ctrl_mbutton=2 Send {LButton 2} If ctrl_mbutton=3 Send {LButton}{F3} If ctrl_mbutton=4 Send {LButton}{F4} If !ctrl_mbutton Send ^{MButton} return #IfWinActive OnDC() { global MouseGetPos , , , win return If win=hwnd } |