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: Autorun 
Author Message
AkulaBig



PostPosted: Thu May 29, 2025 13:05    Post subject: Reply with quote

Loopback wrote:
а так, например, нельзя

Это конечно понятно. Но тут даже более интересная фича. %COMMANDER_PATH% где-то можно и без кавычек использовать, а где-то нельзя. Я имею ввиду не Autorun. В Autorun как-раз можно без кавычек. Проверено. Но от греха подальше закавычил все.
Loopback wrote:
Да, а вот тут действительно есть баг в DllCall с обработкой полного пути dll.

Ой, хорошо что это не мой косяк. А то я уже волноваться начал Twisted Evil
Loopback wrote:
а пока можно решить

Спасибо, попробую. Кстати, полезное дело я сделал. Помимо выявленного бага еще попутно одну проблемку решил из взаимодействия MI в разных плагинах. Хинты через Autorun отлично подхватывают русский язык. А вот у TCMediaInfo какая-то проблема возникла. Для ее решения пришлось в Autorun вынести подключение языка из функции хинтов в основную. Объяснить трудно. Вот скрины:


Code:
      <source name="G_OverallBitRate" field="OverallBitRate/String"/>

Первый скрин просмотр из MI через TCMI. Второй скрин с подключение языка в Autorun:
Code:
# Установить язык названий параметров
# Set language of parameters
Switch AUTORUN_TCLANG
   Case 'RUS'
      # Имя DLL в зависимости от разрядности TC
      # DLL name depending on discharge TC
      Static sLib = "MediaInfo" & (auX64 ? "_x64" : "") & ".dll"
      # Static sLib = util_MI
   
      # Загрузить DLL
      # Open DLL
      Static hLib = DllCall("LoadLibrary", _
            "wstr", COMMANDER_PATH & "\Utilities\MediaInfo\" & sLib, _
            "ptr")
      If hLib = 0 Then
         Return "Error LoadLibrary " & sLib
      EndIf
   
         # Получить дескриптор DLL
         # Get DLL descriptor
         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")

      # Удалить дескриптор DLL
      # Delete DLL descriptor
      DllCall(sLib & "\MediaInfo_Delete", "ptr", hMI)
EndSwitch

Я не думаю, что это глюк.
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group