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 

Autorun
Goto page Previous  1, 2, 3 ... 182, 183, 184 ... 190, 191, 192  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
yahuu



Joined: 22 Jun 2023
Posts: 30

Post (Separately) Posted: Sat Apr 19, 2025 07:44    Post subject: Reply with quote

В режиме миниатюр ItemAtCursor("text") может получить информацию, а GetCurrentItem не может. Это ошибка?
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1529

Post (Separately) Posted: Sat Apr 19, 2025 21:45    Post subject: Reply with quote

yahuu
Не совсем, это особенность работы Total Commander в режиме эскизов и различия в методах получения элемента. Обратите внимание, что ItemAtCursor в режиме эскизов может получать текст только
текущего элемента и только тогда, когда курсор находится над тем рядом эскизов, где расположен выделенный элемент. Т.е. эту функцию в режиме эскизов можно использовать только в том случае, если сначала активировать элемент под курсором.

Но для GetCurrentItem возможность получения текста а режиме эскизов выглядит разумной, т.к. укладывается в логику работы функции. Доработал GetCurrentItem.

Runtime 2025-04-19
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 334

Post (Separately) Posted: Tue Apr 22, 2025 22:06    Post subject: Reply with quote

Orion9
Наконец-то дошли руки до тестирования MediaInfo. Подключаю через DllCall, взяв за основу вашу функцию BigHint:
 Hidden text

ProcessExecGetOutput закомментил, так как совершенно не понимаю, как в данном случае организовать возврат значения в нее. Есть-ли у вас какие идеи на этот счет? А то не могу проверить, вообще правильно-ли подключил MI.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 782

Post (Separately) Posted: Wed Apr 23, 2025 13:35    Post subject: Reply with quote

AkulaBig
В дебри старого кода лезть не хочется, да и нет такой возможности. Наверное, лучше сделать отдельную кнопку и попробовать на ней для начала, как всё будет работать:
Code:
TOTALCMD#BAR#DATA
60020

%COMMANDER_EXE%
MediaInfoTest

1
-1

Code:
RegisterCommand 60020 "MediaInfoTest"

Func MediaInfoTest(lParam)
    Local file = RequestCopyDataInfo("SP") & RequestCopyDataInfo("SN")
    If Not FileExist(file) Then
       ShowHint("Файл не существует " & file)
       Return
    Endif   
    If StrPos(FileGetAttr(file), "D") Then
       ShowHint("Каталог" & file)
       Return
    Endif
    Static sLib = "MediaInfo" & (auX64 ? "" : "_i386") & ".dll", _
           hLib = DllCall("LoadLibrary", "wstr", COMMANDER_PATH & "\Ini\Tools\Libs\" & sLib, "ptr")
    If hLib = 0 Then
       ShowHint("Error LoadLibrary " & sLib)
       Return
    EndIf
    Local hMI = DllCall(sLib & '\MediaInfo_New', "Ptr")
    If hMI = 0 Then
       ShowHint("MediaInfo_New returned 0")
       Return
    Endif
    If DllCall(sLib & '\MediaInfo_Open', 'ptr', hMI, "wstr", file, "uint") <> 1 Then
       DllCall(sLib & '\MediaInfo_Delete', "Ptr", hMI)       
       Return ShowHint("MediaInfo_Open failed to open file " &  file)
    EndIf
    If IsPressed(0x11) Then
       DllCall(sLib & '\MediaInfo_Option', 'ptr', hMI, "wstr", "Complete", "wstr", "1", "wstr")
    EndIf
    Local sMI = DllCall(sLib & '\MediaInfo_Inform', 'ptr', hMI, "uint", 0, "wstr")
    DllCall(sLib & '\MediaInfo_Delete', "Ptr", hMI)   
    ShowHint(sMI)
EndFunc

Наспех сделанный и плохо протестированный код, но, кажется, он работает. Вызов с CTRL показывает все данные MediaInfo файла под курсором.

Фича с подсказкой при наведении на файлы мне очень нравится, регулярно ей пользуюсь. Но, насколько я понимаю, вы юзаете x64, а там с этим есть определенные проблемы. И всё же, если будете делать, то лучше, наверное, делать вызов функций по адресам, как это сделано в ahk-скрипте:
Code:
;get dll handle
this.dll := DllCall("LoadLibrary", "Str", dll_location, "Ptr")

;get pointers to make functions cleaner
this.MediaInfo_New := DllCall("GetProcAddress", "Ptr", this.dll, "AStr", "MediaInfo_New", "Ptr")
this.MediaInfo_Open := DllCall("GetProcAddress", "Ptr", this.dll, "AStr", "MediaInfo_Open", "Ptr")
this.MediaInfo_Inform := DllCall("GetProcAddress", "Ptr", this.dll, "AStr", "MediaInfo_Inform", "Ptr")
this.MediaInfo_Option := DllCall("GetProcAddress", "Ptr", this.dll, "AStr", "MediaInfo_Option", "Ptr")
this.MediaInfo_Close := DllCall("GetProcAddress", "Ptr", this.dll, "AStr", "MediaInfo_Close", "Ptr")
this.MediaInfo_Delete := DllCall("GetProcAddress", "Ptr", this.dll, "AStr", "MediaInfo_Delete", "Ptr")

;use this.handle during subsequent dll calls
this.handle := DllCall(this.MediaInfo_New, "Ptr")

;set some defaults
this.Option("Inform","TXT")

А саму библиотеку загружать только один раз при старте ТС или при первом вызове функции BigHint.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 334

Post (Separately) Posted: Wed Apr 23, 2025 16:30    Post subject: Reply with quote

Orion9 wrote:
Фича с подсказкой при наведении на файлы мне очень нравится, регулярно ей пользуюсь.

И я просто балдею от нее.
Orion9 wrote:
насколько я понимаю, вы юзаете x64, а там с этим есть определенные проблемы.

Поэтому я и полез сразу в функцию. А вы правы. Лучше сначала на кнопке отладить работу MI. Просто мне не понятно, есть шанс, что библиотека в х64 заработает?
Orion9 wrote:
И всё же, если будете делать, то лучше, наверное, делать вызов функций по адресам, как это сделано в ahk-скрипте

Даже не знал, что так можно. Я-то за основу взял свой рабочий скрипт на au3, опять-же основанный на скрипте из инета. И на ahk встречал только точно такой-же. Естественно с учетом синтаксиса.
В общем есть что поковырять. А я сейчас именно этой темой и занят. Правда еще одна очень интересная тема есть. Но пока MI в приоритете.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 782

Post (Separately) Posted: Wed Apr 23, 2025 18:52    Post subject: Reply with quote

AkulaBig wrote:
Поэтому я и полез сразу в функцию.

Да у вас всё правильно вроде сделано. Разве что вопрос вызывает строчка:
Code:
Local InfoParameters = DllCall("mediainfo\MediaInfo_Option", _
   "ptr", 0, _
   "wstr", "Complete", _
   "wstr", "")

Где указатель почему-то нулевой. Ещё во всех вызовах DllCall желательно указыввать тип возвращаемого значения, чтобы не бралось значение по умолчанию. Возможно из-за этого не работает.
AkulaBig wrote:
Просто мне не понятно, есть шанс, что библиотека в х64 заработает?

Код, который я запостил выше, хоть и сырой, но в ТС x64 работает, а значит и в подсказке с кастомными полями он тоже работать будет, если, конечно, вытрясти из Гислера корректную работу CTRL и других клавиш-модификаторов. Насколько реально из него такое вытрясти, ответ вы, думаю, знаете: как только он услышит слово "Autorun", все последние шансы тут же улетучатся.
AkulaBig wrote:
Я-то за основу взял свой рабочий скрипт на au3, опять-же основанный на скрипте из инета. И на ahk встречал только точно такой-же.

На сайте MediaInfo есть архив для разработчиков с примерами вызова и описанием всех функций, но я не стал его скачивать. Взял за основу ваш код, недавний код для uchardet и класс для работы с MediaInfo на ahk для сверки:
https://github.com/Qriist/class_MediaInfo/blob/master/lib/class_MediaInfo.ahk
Получилось довольно быстро. Помню, когда только начинал делать первые вызовы DllCall, на это уходило очень много времени. Думаю, скоро и у вас не будет с этим никаких проблем.
AkulaBig wrote:
Правда еще одна очень интересная тема есть.

Это хорошо, тем более что международный слоган Autorun пока никто не менял: "Embody your fantasies and make Total Commander great again!" )
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 334

Post (Separately) Posted: Wed Apr 23, 2025 20:24    Post subject: Reply with quote

Orion9 wrote:
Где указатель почему-то нулевой.

Так в оригинале. Там-же строковый параметр. Разберемся.
Orion9 wrote:
Ещё во всех вызовах DllCall желательно указыввать тип возвращаемого значения, чтобы не бралось значение по умолчанию.

Про это я помнил. В начале даже handle прописал. Но далее не знал, какое значение надо прописывать. Ваши значения у меня тоже вызывают вопросы. Пока я в этом не очень.
Orion9 wrote:
Возможно из-за этого не работает.

Не работает у меня по простой причине. Нет вывода в консоль. И ваше ShowHint(sMI) вроде для пользовательских полей тоже не прокатит. Если я правильно понимаю, можно только ProcessExecGetOutput использовать. А вот написать с ним выражение не получилось. Или я опять чего-то не догоняю и ShowHint будет выводить значение в поле?
Orion9 wrote:
в ТС x64 работает, а значит и в подсказке с кастомными полями он тоже работать будет

Кнопки и с MI.exe прекрасно в х64 работали. Так что не факт.
Orion9 wrote:
если, конечно, вытрясти из Гислера корректную работу CTRL

Будем надеяться когда-нибудь придет на землю русскую Витязь или Батыр и так встряхнет Гислера, что он все наши хотелки сделает Laughing
Orion9 wrote:
На сайте MediaInfo есть архив для разработчиков с примерами вызова и описанием всех функций

Как вы эти ссылки находите-то? Я вроде лазил по сайту, но ничего подобного не нашел. А можете ссылку именно на этот архив дать?
Orion9 wrote:
международный слоган Autorun

Мне аж стыдно, но тема к Autorun отношения не имеет Embarassed
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 782

Post (Separately) Posted: Thu Apr 24, 2025 00:21    Post subject: Reply with quote

AkulaBig wrote:
Так в оригинале. Там-же строковый параметр. Разберемся.

Я исходил из кода Ahk, но значение "ноль", видимо, допустимо (проверил пример на Au3).
AkulaBig wrote:
Ваши значения у меня тоже вызывают вопросы. Пока я в этом не очень.

Да я как бы тоже... не очень )

Loopback, наверное, может подказать более правильно, тем более что целый wdx-плагин был сделан на вызовах MediaInfo.
AkulaBig wrote:
Не работает у меня по простой причине. Нет вывода в консоль

А он тут и не нужен. Из консоли бралось в переменную, сейчас будет браться из DLL. Переделал код кнопки в кастомные поля:
Code:
Func JoinHint(FileName, FieldIndex, UnitIndex)
    Local b_CTRL = IsPressed (0x11)
    If Not b_CTRL Then
       Return
    EndIf   
    Static pipe, idx = 0   
    Static sLib = "MediaInfo" & (auX64 ? "" : "_i386") & ".dll", _
           hLib = DllCall("LoadLibrary", "wstr", COMMANDER_PATH & "\Ini\Tools\Libs\" & sLib, "ptr")
    If hLib = 0 Then
       Return "Error LoadLibrary " & sLib
    EndIf
    If FieldIndex = 1 Then
       idx = 0
       Local hMI = DllCall(sLib & '\MediaInfo_New', "Ptr")
       If hMI = 0 Then
          Return "MediaInfo_New returned 0"
       Endif
       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", "", "wstr")       
       If IsPressed(0x10) Then
          DllCall(sLib & '\MediaInfo_Option', 'ptr', hMI, "wstr", "Complete", "wstr", "1", "wstr")
       EndIf
       pipe = DllCall(sLib & '\MediaInfo_Inform', 'ptr', hMI, "uint", 0, "wstr")
       DllCall(sLib & '\MediaInfo_Delete', "Ptr", hMI)
       If IsPressed (0x5B) Then
          idx = 50
       Endif
    Endif
    Return TrimSpaces(StrPart(pipe, auLF, FieldIndex + idx))
EndFunc

Работает. SHIFT - полная инфа. Очень быстро работает, надо будет переделать старый хинт, когда руки доберуться.
AkulaBig wrote:
придет на землю русскую Витязь или Батыр и так встряхнет Гислера, что он все наши хотелки сделает

Боюсь, это не поможет. Гислеру наши хотелки не нужны, у него своё, дальнее видение. Видеоплеер и 7zip уже прикрутил, теперь, видимо, браузер на очереди. Он еще доведёт, ДОВЕДЁТ свое детище до крылатой фразы "Куда же Тотал без браузера-то, а лучше двух" )
AkulaBig wrote:
Я вроде лазил по сайту, но ничего подобного не нашел. А можете ссылку именно на этот архив дать?

Да вроде бы здесь всё:
https://mediaarea.net/en/MediaInfo/Download/Windows
https://mediaarea.net/download/binary/libmediainfo0/25.03/MediaInfo_DLL_25.03_Windows_x64_WithoutInstaller.7z
Внутри каталог "Developers".
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 334

Post (Separately) Posted: Thu Apr 24, 2025 11:50    Post subject: Reply with quote

Orion9 wrote:
Работает

ТС х64 не работает. Получаются не работают сами кастомные поля в ТС х64?
Orion9 wrote:
Внутри каталог "Developers".

Я даже смотрел этот каталог, но показалось, что ссылка выше совсем не из этих документов.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 782

Post (Separately) Posted: Thu Apr 24, 2025 13:03    Post subject: Reply with quote

AkulaBig wrote:
ТС х64 не работает.

В топике это обсуждалось. Ничего не поделать: в TC x64 остаётся пока только "лочить" подсказку.

Сейчас с DllCall можно проверять статус клавиши, например CapsLock, не прибегая к функции SetHotkeyAction и "локу" через переменные:
Code:
Local bCaps = DllCall("GetKeyState", "int", 0x14, "short")
Local b_CTRL = BitAND(bCaps, 1)   

Полный, рабочий код:
 Hidden text

Конечно, не всегда удобно держать подсказку "на замке", но другого варианта для х64 пока нет.
AkulaBig wrote:
Получаются не работают сами кастомные поля в ТС х64?

Поля работают. Не работает именно подсказка при нажатии клавиш-модификаторов. Можете проверить. Вызовите в х64 стандартную подсказку для любого файла и нажмите CTRL - подсказка просто исчезнет. И это случается только с ТС х64, в 32-битном ТС всё нормально.
AkulaBig wrote:
показалось, что ссылка выше совсем не из этих документов.

Как-то мало там информации. Я, например, не понял, что именно делает параметр типа "Ptr" в MediaInfo_Open. В доках его вообще нет, хотя я глубоко не разбирался.

Loopback
Если привязать функцию к CapsLock командой SetHotkeyAction /V:20, то как сделать, чтобы эта функции пропускала через себя нажатие этой клавиши? Сейчас она блокируется.
Набрел на SendInput, но разбираться и эксперементировать со структурой INPUT сейчас совсем времени нет.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 334

Post (Separately) Posted: Thu Apr 24, 2025 13:22    Post subject: Reply with quote

Orion9 wrote:
Конечно, не всегда удобно держать подсказку "на замке", но другого варианта для х64 пока нет.

А какие-то доп настройки надо делать? Не работает и этот код.
Orion9 wrote:
В топике это обсуждалось.

Я это помню. Но там было без подробностей.
Orion9 wrote:
Как-то мало там информации

Я и писал handle, а оказывается ptr нужен. В примере на au3 используется массив. Видимо поэтому и ptr.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 782

Post (Separately) Posted: Thu Apr 24, 2025 13:39    Post subject: Reply with quote

AkulaBig wrote:
Не работает и этот код.

Проверял в обеих версиях, код должен работать.

А в 32-битном у вас тоже не работает? Наверное, здесь могут быть только пути или имена функций виноваты. У меня в заголовке autorun.cfg:
Code:
Pragma AutorunPluginFields "C1:::JoinHint" "C2:::JoinHint" "C3:::JoinHint" "C4:::JoinHint" "C5:::JoinHint" "C6:::JoinHint" "C7:::JoinHint" "C8:::JoinHint" "C9:::JoinHint" "C10:::JoinHint" "C11:::JoinHint" "C12:::JoinHint" "C13:::JoinHint" "C14:::JoinHint" "C15:::JoinHint" "C16:::JoinHint" "C17:::JoinHint" "C18:::JoinHint" "C19:::JoinHint" "C20:::JoinHint" "C21:::JoinHint" "C22:::JoinHint" "C23:::JoinHint" "C24:::JoinHint" "C25:::JoinHint" "C26:::JoinHint" "C27:::JoinHint" "C28:::JoinHint" "C29:::JoinHint" "C30:::JoinHint" "C31:::JoinHint" "C32:::JoinHint" "C33:::JoinHint" "C34:::JoinHint" "C35:::JoinHint" "C36:::JoinHint" "C37:::JoinHint" "C38:::JoinHint" "C39:::JoinHint" "C40:::JoinHint" "C41:::JoinHint" "C42:::JoinHint" "C43:::JoinHint" "C44:::JoinHint" "C45:::JoinHint" "C46:::JoinHint" "C47:::JoinHint" "C48:::JoinHint" "C49:::JoinHint" "C50:::JoinHint" "C51:::JoinHint" "C52:::JoinHint" "C53:::JoinHint" "C55:::JoinHint" "C55:::JoinHint" "C56:::JoinHint" "C57:::JoinHint" "C58:::JoinHint" "C59:::JoinHint" "C60:::JoinHint"

AkulaBig wrote:
Я это помню. Но там было без подробностей.

Подробности были немного ранее
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 334

Post (Separately) Posted: Thu Apr 24, 2025 13:54    Post subject: Reply with quote

Orion9 wrote:
А в 32-битном у вас тоже не работает?

TC x32 не трогаем. В нем работало всегда и работают сейчас любые варианты.
Orion9 wrote:
Наверное, здесь могут быть только пути или имена функций виноваты.

Тогда-бы и в х32 не работало. У вас в настройках все подсказки включены? Я могу посмотреть вашу сборку, но может вы с тех пор меняли какие-то настройки? Может выложите последнюю версию сборки с ТС х64?
Orion9 wrote:
Подробности были немного ранее

Теперь понятно.

Добавлено спустя 1 час 3 минуты:

Если все дело в клавишах-модификаторов, то может и ну их. Надо попробовать без них, будет-ли работать.

Добавлено спустя 9 минут:

Проверил. Без модификаторов все работает и я так и оставляю. Меня это полностью устраивает. Теперь надо русский язык прикрутить и с d разобраться. Эх, не знал я ранее об источнике проблемы. Давно-бы убрал его.
И сразу думка о будущем. Можно-ли будет полям присвоить осмысленные названия или они в каждом файле не соответствуют друг-другу? Это я для использования не в хинтах, а в кастомных полях. Главное дело сдвинулось с мертвой точки.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 782

Post (Separately) Posted: Thu Apr 24, 2025 18:52    Post subject: Reply with quote

AkulaBig wrote:
вы с тех пор меняли какие-то настройки?

Нет, каких-то крупных изменений с момента последней ссылки на предыдущей странице больше не было, если не считать перехода с Autorun 2.2.17 на 2.2.18, но весь код остался прежним. Я просто заметил, что вы используете старое имя функции "BigHint", которое я давно уже поменял на "JoinHint".
AkulaBig wrote:
Если все дело в клавишах-модификаторов, то может и ну их.

Основная причина использования модификаторов при вызове подсказки была в том, чтобы сохранить старый хинт с полями плагина TCMediaInfo как хинт по умолчанию. У меня настроенный XML-файл конфигурации, который меня вполне устраивает, даже больше, чем вполне. Но иногда требуется получить развернутую информацию о медиа-файлах, в том числе и сводную, компактную информацию о дорожках. Отсюда файл-шаблона hint.txt в сборке, который там пока больше для примера, поскольку я так и не доделал формат вывода так, чтобы длинные строки не разрывались:
 Hidden text

AkulaBig wrote:
Теперь надо русский язык прикрутить и с d разобраться.

"d" нужно отдельно парсить. Это обрубок пути, который я не стал трогать, так как длинный путь разрывается и смотрится некрасиво.

Русский добавить можно где-то так:
Code:
 DllCall(sLib & '\MediaInfo_Option', 'ptr', hMI, "wstr", "Language", "wstr", "file://C:/Portable/TC 11.50/Ini/Tools/Libs/ru.csv", "wstr")

Но нужно будет через переменную.
AkulaBig wrote:
Можно-ли будет полям присвоить осмысленные названия или они в каждом файле не соответствуют друг-другу?

Как я понял, у каждого файла свои. В этом вся и сложность задачи. Без шаблонов и фильтров источников не обойтись.

P.S. Не знаю, почему у вам CapsLock не работает. Только что еще раз проверил - у меня всё норм.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 334

Post (Separately) Posted: Thu Apr 24, 2025 19:46    Post subject: Reply with quote

Orion9 wrote:
"BigHint", которое я давно уже поменял на "JoinHint"

Это я заметил сразу. Не в этом дело.
Orion9 wrote:
чтобы сохранить старый хинт с полями плагина TCMediaInfo как хинт по умолчанию

Скорей всего у всех так. Но мне вариант без доп клавиш больше нравится.
Orion9 wrote:
P.S. Не знаю, почему у вам CapsLock не работает. Только что еще раз проверил - у меня всё норм.

Я даже проверять не стал, как просек фишечку про клавиши-модификаторы.
Orion9 wrote:
Русский добавить можно где-то так

Вот ведь обидно как. Ведь для CLI я в свое время разобрался и написал:
Code:

"MediaInfo.exe" "--Language=file://ru.csv" "--Complete=0" "bestcity.mp3" --LogFile=Complete0.txt"

А тут не догадался, что надо полный путь прописать. Похоже у меня там библиотека и язык лежали рядом со скриптом. А я как только уже не попробовал. Этот-то вариант не заработал сразу.
Orion9 wrote:
"d" нужно отдельно парсить.

Я это уже понял. Так как сейчас тестовые файлы на С кинул для удобства тестирования. Сейчас эти шероховатости устраню, надо будет решать с крякозябрами. В au3 я эту проблему решил, посмотрим, можно-ли здесь это сделать.
Orion9 wrote:
Как я понял, у каждого файла свои. В этом вся и сложность задачи. Без шаблонов и фильтров источников не обойтись.

Ну да, у меня просто сомнение возникло. Видимо можно связать их между собой, но головняк это. Нет смысла с этим связываться.

Добавлено спустя 22 минуты:

Язык прописал:
Code:

Local lng_MI ="file://" & COMMANDER_PATH & "\Utilities\MediaInfo\ru.csv"
DllCall(sLib & '\MediaInfo_Option', 'ptr', hMI, "wstr", "Language", "wstr", lng_MI, "wstr")


Добавлено спустя 1 час 32 минуты:

Вот причесанный код. Язык добавлен. Парсинг поправлен:
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")
      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
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... 182, 183, 184 ... 190, 191, 192  Next
Page 183 of 192

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group