Orion9

|
Posted: Fri Apr 25, 2025 00:18 Post subject: |
|
|
AkulaBig wrote: | Вот причесанный код. |
Проверил, работает, всё супер.
А теперь если взять мой файл hint.txt:
 hint.txt General;Name: %FileName%.%FileExtension%\r\nSize: %FileSize/String4%\r\n[Duration: %Duration%]\r\n[Duration: %Duration/String1%]\r\n[Duration: %Duration/String5%]\r\n[General: %BitRate/String%][(%BitRate_Mode%)][, %Format%][(%Format/Family%)]$if(%Cover%,\, Cover)[, %Width%x%Height%pix][, AR:%AspectRatio%=~%AspectRatio/String%][, %Channel(s)%ch][, %Resolution/String%][, %FrameRate/String%][, %SamplingRate/String%][, %Bits-(Pixel*Frame)%bpf][, %Language%]\r\n
Video;Video #%StreamKindID%: [%Width%x%Height%pix][, AR:%AspectRatio%=~%AspectRatio/String%][, %Resolution/String%][, %FrameRate/String%][, %BitRate/String%][(%BitRate_Mode%)][, %Bits-(Pixel*Frame)%bpf][, %Format%][(%Format/Family%)][, %Language%][, %Channel(s)%ch][, %SamplingRate/String%]\r\n
Audio;Audio #%StreamKindID%: [%Channel(s)%ch][, %Resolution/String%][, %SamplingRate/String%][, %BitRate/String%][(%BitRate_Mode%)][, %Format%][(%Format/Family%)][, %Format_Profile%][, %Language%][, %Width%x%Height%pix][, AR:%AspectRatio%=~%AspectRatio/String%][, %FrameRate/String%][, %Bits-(Pixel*Frame)%bpf]\r\n
;
Text;Text #%StreamKindID%: %Format%[(%Format/Family%)][@%Language%][, %StreamSize/String4%][, %BitRate/String%][(%BitRate_Mode%)][, %Width%x%Height%pix][, AR:%AspectRatio%=~%AspectRatio/String%][, %Channel(s)%ch][, %Resolution/String%][, %FrameRate/String%][, %SamplingRate/String%][, %Bits-(Pixel*Frame)%bpf]\r\n
Chapters;Chapters #%StreamKindID%: %Format%[(%Format/Family%)][@%Language%][, %Total% entries][, %StreamSize/String4%][, %BitRate/String%][(%BitRate_Mode%)][, %Width%x%Height%pix][, AR:%AspectRatio%=~%AspectRatio/String%][, %Channel(s)%ch][, %Resolution/String%][, %FrameRate/String%][, %SamplingRate/String%][, %Bits-(Pixel*Frame)%bpf]\r\n
;
Image;Image #%StreamKindID%: [%Width%x%Height%pix][, AR:%AspectRatio%=~%AspectRatio/String%][, %Resolution/String%][, %FrameRate/String%][, %StreamSize/String4%][, %BitRate/String%][(%BitRate_Mode%)][, %Bits-(Pixel*Frame)%bpf][, %Format%][(%Format/Family%)][, %Language%][, %Channel(s)%ch][, %SamplingRate/String%]\r\n
;
Menu;Menu #%StreamKindID%: [%MenuID/String%][, %Duration% Format:%Format/String%]
;
И сохранить его в папку MediaInfo, а к коду добавить:
Code: | If BitAND(DllCall("GetKeyState", "int", 0x14, "short"), 1) <> 0 Then
DllCall(sLib & "\MediaInfo_Option", _
"ptr", hMI, "wstr", "Output", "wstr", "file://" & COMMANDER_PATH & "\Utilities\MediaInfo\hint.txt", _
"wstr")
Else
DllCall(sLib & "\MediaInfo_Option", _
"ptr", hMI, "wstr", "Output", "wstr", "", _
"wstr")
Endif |
 Полный код Code: | Func JoinHint(FileName, FieldIndex, UnitIndex)
Static pipe
Static sLib = "MediaInfo" & (auX64 ? "" : "_i386") & ".dll"
Static hLib = DllCall("LoadLibrary", _
"wstr", COMMANDER_PATH & "\Utilities\MediaInfo\" & sLib, _
"ptr")
If hLib = 0 Then
Return "Error LoadLibrary " & sLib
EndIf
If FieldIndex = 1 Then
Local hMI = DllCall(sLib & "\MediaInfo_New", "ptr")
If hMI = 0 Then
Return "MediaInfo_New returned 0"
Endif
Local lng_MI ="file://" & COMMANDER_PATH & "\Utilities\MediaInfo\ru.csv"
DllCall(sLib & "\MediaInfo_Option", _
"ptr", hMI, "wstr", "Language", "wstr", lng_MI, _
"wstr")
If DllCall(sLib & "\MediaInfo_Open", _
"ptr", hMI, "wstr", FileName, _
"uint") <> 1 Then
DllCall(sLib & "\MediaInfo_Delete", "ptr", hMI)
Return "MediaInfo_Open failed to open file " & FileName
EndIf
DllCall(sLib & "\MediaInfo_Option", _
"ptr", hMI, "wstr", "Complete", "wstr", "0", _
"wstr")
If BitAND(DllCall("GetKeyState", "int", 0x14, "short"), 1) <> 0 Then
DllCall(sLib & "\MediaInfo_Option", _
"ptr", hMI, "wstr", "Output", "wstr", "file://" & COMMANDER_PATH & "\Utilities\MediaInfo\hint.txt", _
"wstr")
Else
DllCall(sLib & "\MediaInfo_Option", _
"ptr", hMI, "wstr", "Output", "wstr", "", _
"wstr")
Endif
pipe = DllCall(sLib & "\MediaInfo_Inform", _
"ptr", hMI, "uint", 0, _
"wstr")
DllCall(sLib & "\MediaInfo_Delete", "ptr", hMI)
Endif
Return TrimSpaces(StrPart(pipe, auLF, FieldIndex))
EndFunc
Func TrimSpaces(String)
Local a, b
If Not StrPos(String, ":") Then Return String
a = StrPart(String, ": ", 1)
b = StrPart(String, ": ", 2)
Return StrTrim(a) & ": " & StrTrim(b)
EndFunc |
То теперь при включеном CapsLock будет отображаться подсказка из шаблона, которая особенно хороша на видео файлах с несколькими дорожками и титрами. А при выключеном CapsLock будет по-прежнему доступна вся подсказка с русскими полями. В общем, тут есть где пофантазировать. Я же говорю: "Embody your fantasies and make Total Commander great again!" ) Loopback сделал то, что Гислеру и не снилось: положил всю Windows к ногам TC.
AkulaBig wrote: | Вот ведь обидно как. |
Не парьтесь, это даже на зашквар не тянет. Я вон пропустил ключ /S и нарушил работу такой важной клавиши, как CapsLock, вот где обидно бывает. Кстати, эту строку я, кажется, у вас и брал, потому как в доках к функции Option этого нету
AkulaBig wrote: | Документация на самом деле крайне скудная. В своё время во многом приходилось разбираться методом тыка. |
Спасибо за пояснения. Документация к библиотеке действительно слабая, видел на это жалобы на форуме AutoHotKey ещё давно. Так что не удивлён.
P.S. Кстати, прикольный пример со сворачиванием ТС в трей. Считаю, что так во всем Windows должно быть по умолчанию сделано ) |
|