;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; Total Commander DreamLair ;
; Script: Open files in specific program ;
; Script: Відкриття файлів у вказаній програмі ;
; Script: Открытие файлов в заданной программе ;
; Script version: 1.0 (2018.09.23) ;
; Required: Total Commander 9.20+ ;
; Script author: LonerD ;
; Site: https://dreamlair.net ;
; Made in Donetsk People's Republic ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; Description:
; Open selected supported files in specific program
; or Run program if selected extensions isn't supported.
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; Опис:
; Відкрити виділені файли у вказаній програмі або
; запустити програму, якщо розширення не підтримуються.
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; Описание:
; Открыть выделенные файлы в заданной программе или
; запустить программу, если расширения не поддерживаются.
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; Parameters / Параметри / Параметры:
; 1: %Y"%WL" (required / обов'язковий / обязательный)
; 2: (required / обов'язковий / обязательный)
; {program name as in section in ini-file}
; {назва програми, повинна співпадати з назвою секції ini-файлу}
; {название программы, как она указана в названии секции ini-файла}
; 3: {number of opened files; if omitted - read from ini-file }
; {кількість файлів, що будуть відкриті; якщо відсутнє - береться з ini}
; {количество открываемых файлов; если отсутствует, то берётся из ini}
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; Parameters example: %Y"%WL" SumatraPDF 10
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; INI-file example:
; [SumatraPDF]
; Program=%commander_path%\Utilities\SumatraPDF\SumatraPDF.exe
; LineExt=cbr,cbz,djvu,djv,pdf,chm,xps,epub,fb2,pdb,mobi,txt,zip
; FilesN=12
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; INI-file must have the same name as script ;
; and located in the same directory ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
#NoEnv
#NoTrayIcon
#SingleInstance ignore
SetBatchLines, -1
if not ( WinExist("ahk_class TTOTAL_CMD") || WinActive("ahk_class TTOTAL_CMD") )
ExitApp
if 0 < 2
ExitApp
FileList = %1%
ProgramN = %2%
FilesN = %3%
SplitPath, A_ScriptFullPath,, ScriptDir,, ScriptNameNoExt
IniFile := ScriptDir . "\" . ScriptNameNoExt . ".ini"
if !FileExist(IniFile)
ExitApp
IniRead, ProgramRun, % IniFile, % ProgramN, Program
EnvGet, commander_path, commander_path
Transform, ProgramRun, Deref, % ProgramRun
ProgramRun := ExpandEnvVars (ProgramRun)
if !FileExist(ProgramRun)
ExitApp
IniRead, LineExt, % IniFile, % ProgramN, LineExt
if FilesN is not integer
IniRead, FilesN, % IniFile, % ProgramN, FilesN
FileListRun := ""
FileListRunN := 0
Loop, Read, % FileList
{
if not InStr(FileExist(A_LoopReadLine), "D")
{
SplitPath, A_LoopReadLine, FileName, FileDir, FileExt, FileNameNoExt
if FileExt in % LineExt
{
FileListRun := FileListRun . A_LoopReadLine . "`r`n"
FileListRunN := FileListRunN + 1
}
}
}
if ( FileListRunN = 0 )
{
Run, % ProgramRun
ExitApp
}
FilesN := Min(FilesN, FileListRunN)
Loop, Parse, % FileListRun, `n, `r
Run, %ProgramRun% "%A_LoopField%"
Until A_Index = FilesN
FileList := ""
FileListRun := ""
ExitApp
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
ExpandEnvVars(ppath)
{
VarSetCapacity(Dest, 2000)
DllCall("ExpandEnvironmentStrings", Str, ppath, Str, Dest, Int, 1998)
Return, Dest
}
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
|