Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Переход в папку следом за текущей в родительском каталоге 
Author Message
LonerD



PostPosted: Sun Apr 07, 2019 14:15    Post subject: Reply with quote

AutoHotkey cкрипт.
Навигация круговая. Если каталог последний - то происходит переход в первый каталог в той же панели (и в обратную сторону - из первого в последний)

Code:
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; Total Commander DreamLair                        ;
; Script: Go to parallel directory                 ;
; Скрипт: Переход в параллельный каталог           ;
; Script version: 1.0 (2018.09.30)                 ;
; Required: Total Commander 9.0+                   ;
; Script author: LonerD                            ;
; Site: https://dreamlair.net                      ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; Parameter:                                       ;
;     1 - backward navigation                      ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;

#NoEnv
#NoTrayIcon
#SingleInstance force
SetBatchLines, -1
SendMode Input

If not ( WinExist("ahk_class TTOTAL_CMD") || WinActive("ahk_class TTOTAL_CMD") )
  ExitApp
WinGet, hw_TTOTAL_CMD, ID, A
global hw_TTOTAL_CMD

NavMode = %1%
if ( NavMode != 1 )
  NavMode = 0

DllCall("LockWindowUpdate", "uint", hw_TTOTAL_CMD)

TCPanelA := SendMessageTC(1074, 1000, 0, A)

hw_TCPathA := SendMessageTC(1074, 8+TCPanelA, 0, A)
ControlGetText, PathA,, % "ahk_id " hw_TCPathA

SendMessage, 1075, 2002,,, % "ahk_id " hw_TTOTAL_CMD

TCPanelA := SendMessageTC(1074, 1000, 0, A)
TCItemsA := SendMessageTC(1074, 1002+TCPanelA, 0, A)
TCCaretA := SendMessageTC(1074, 1006+TCPanelA, 0, A)
TCUpDirA := SendMessageTC(1074, 1008+TCPanelA, 0, A)
TCFileA := SendMessageTC(1074, 1010+TCPanelA, 0, A)

if ( TCFileA = 4294967295 )
  TCFileA := TCItemsA

ControlGetText, PathA2,, % "ahk_id " hw_TCPathA
if ( PathA = PathA2 )
  Goto, Exit

if ( NavMode = 1 )
  NextDir := TCCaretA = TCUpDirA ? TCFileA - TCUpDirA - 1 : TCCaretA - TCUpDirA - 1
else
  NextDir := TCFileA - TCCaretA > 1 ? TCCaretA + 1 - TCUpDirA : 0

SendMessage, 1075, 2049, % NextDir,, % "ahk_id " hw_TTOTAL_CMD
SendMessage, 1075, 1001,,, % "ahk_id " hw_TTOTAL_CMD

Exit:
DllCall("LockWindowUpdate", "uint", 0)
ExitApp

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; Total Commander Send Message function            ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
SendMessageTC(TCMsg, wParam, lParam, aControl)
{
  SendMessage, % TCMsg, % wParam, % lParam, % aControl, % "ahk_id " hw_TTOTAL_CMD
  return ErrorLevel
}
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;

_________________
Windows 11 | TC DreamLair eternal pre-α


Last edited by LonerD on Sun Apr 07, 2019 19:40; edited 1 time in total
View user's profile Send private message Visit poster's website ICQ Number


Powered by phpBB © 2001, 2005 phpBB Group