Orion9

|
Posted: Mon Jan 13, 2025 23:56 Post subject: |
|
|
AkulaBig
Да это понятно. Просто речь шла о файловых операциях как раз, а не об окнах. Loopback же подтвердил, что макрос AUTORUN_TCLANG просто считывает ключ из wincmd.ini, что равноценно обычному вызову функции IniRead. Как по мне, то между:
Code: | IniRead /R lng %COMMANDER_INI% "Configuration" "LanguageIni"
If lng = "WCMD_RUS.LNG" Then
Endif
| И:
Code: | If %COMMANDER_LANG% = "WCMD_RUS.LNG" Then
Endif
| Я бы однозачно выбрал второе
P.S. И все-таки добрались у меня руки до функции SuperWDX. В прошлый раз ее доделать помешал плагин wdx4i, который не хотел загружаться в объект, но поскольку Loopback исправил ошибку, я решил придать всему этому какой-то законченный вид:
 Hidden text Code: | Func GetSuperWdx(FileName, FieldIndex, UnitIndex)
Static video_ext = ".mp4 .mkv .avi", _
audio_ext = ".mp3 .flac .m4a", _
picture_ext = ".jpg .bmp .gif .png", _
archive_ext = ".7z .rar .zip .cab .zst"
If StrPos(FileGetAttr(FileName), "D") Then
Return "<Dir>"
Endif
Local file_ext
Local ext_pos = StrPos(FileName, '.', -1)
if ext_pos > 0 Then
file_ext = StrMid(FileName, ext_pos+1, StrLen(FileName)-ext_pos)
If StrPos(video_ext, '.' & file_ext) Then Return GetVideoInfo(FileName)
If StrPos(audio_ext, '.' & file_ext) Then Return GetAudioInfo(FileName)
If StrPos(picture_ext, '.' & file_ext) Then Return GetPicsInfo(FileName)
If StrPos(archive_ext, '.' & file_ext) Then Return GetArchInfo(FileName)
Endif
EndFunc
Func GetVideoInfo(FileName)
Local s
obj = Plugin("TCMediaInfo")
If ERROR = 0 Then
obj.FileName = FileName
# All video as string
s = obj.GetValue(28)
Free(obj)
Else
s = "Plugin error " & ERROR
Endif
Return s
EndFunc
Func GetAudioInfo(FileName)
Local s
obj = Plugin("TCMediaInfo")
If ERROR = 0 Then
obj.FileName = FileName
# All audio as string
s = obj.GetValue(39)
Free(obj)
Else
s = "Plugin error " & ERROR
Endif
Return s
EndFunc
Func GetPicsInfo(FileName)
Local s
obj = Plugin("wdx4i")
If ERROR = 0 then
obj.FileName = FileName
# wdx4i.pixw, wdx4i.pixh, wdx4i.orient, wdx4i.depth
s = obj.GetValue(5) & " x " & obj.GetValue(6) & " , " & obj.GetValue(7) & " , " & obj.GetValue(13)
Free(obj)
Else
s = "Plugin error " & ERROR
Endif
Return s
EndFunc
Func GetArchInfo(FileName)
Local s
obj = Plugin("Total7zip")
If ERROR = 0 then
obj.FileName = FileName
s = (obj.GetValue(5) <> "" ? obj.GetValue(5) & ", " : "")
s &= "Folders: " & obj.GetValue(6) & ", Files: " & obj.GetValue(7)
s &= (obj.GetValue(11) = "+" ? ", Solid" : "")
s &= (obj.GetValue(1) = "+" ? ", Encripted" : "")
s &= (obj.GetValue(9) <> "" ? ", Method: " & obj.GetValue(9) : "")
s &= ",Type: " & obj.GetValue(8)
Free(obj)
Else
s = "Plugin error " & ERROR
Endif
Return s
EndFunc
|
Вывод в дополнительном поле выглядит примерно так:
 Hidden text Code: | test 01.m4a AAC, 44.1 kHz, 2 Ch, 491 Kbps
test 02.flac FLAC, 44.1 kHz, 2 Ch, 16 Bits, 848 Kbps
test 03.flac FLAC, 44.1 kHz, 2 Ch, 16 Bits, 768 Kbps
test 05.mp3 MPEG Audio, 44.1 kHz, 2 Ch, 320 Kbps
test 06.mp3 MPEG Audio, 44.1 kHz, 2 Ch, 320 Kbps
test 08.jpg 3840 x 2160 , Landscape , 24
test 09.7z 93%, Folders: 0, Files: 1, Method: LZMA2:18,Type: 7z
test 10.jpg 505 x 550 , Portrait , 24
test 11.jpg 100 x 100 , Quadrate , 24
test 12.JPG 1223 x 465 , Portrait , 24
test 13.JPG 465 x 1223 , Landscape , 24
test 14.7z 27%, Folders: 1, Files: 5, Method: LZMA2:6k,Type: 7z
test 15.7z 26%, Folders: 2, Files: 73, Solid, Method: LZMA2:26 LZMA:20 BCJ2,Type: 7z
test 16.zst Folders: 0, Files: 1, Method: header-open-only: XXH64 single-segments wnd-MAX:29893,Type: zstd
test 17.zst Folders: 0, Files: 1, Method: header-open-only: XXH64 single-segments wnd-MAX:29663,Type: zstd
test 18.mkv 1920x804 (2.39:1), 23.976 fps, HEVC, 6,96 MBps
test 18.mp4 1920x1080 (16:9), 23.976 fps, AVC, 3,96 MBps
test 19.mp4 1920x1080 (16:9), 30.000 fps, AVC, 2,65 MBps
test 19.png 676 x 757 , Portrait , 24
test 20.png 960 x 687 , Landscape , 24
test 21.png 1223 x 465 , Landscape , 24
test 22.zip 48%, Folders: 1, Files: 6,Type: zip
test 23.zip 61%, Folders: 1, Files: 18,Type: zip
test 24.zip 66%, Folders: 1, Files: 21,Type: zip
test 25.zip 41%, Folders: 3, Files: 106,Type: zip
test 26.zip 41%, Folders: 3, Files: 106,Type: zip
test 27.rar 23%, Folders: 1, Files: 15, Solid, Method: v6:16M:m5,Type: Rar5
|
Ну не знаю... Вам решать. В любом случае, в Autorun сейчас есть такая возможность. Можно, конечно, при желании, все более тонко подстроить под конкретную задачу, это был лишь пример. Но главный конфиг обязательно должен в первой строке объявлять дополнительное поле:
Code: | Pragma AutorunPluginFields "SuperWdx:::GetSuperWdx" |
|
|