[wdx] WinScript Advanced Content Plugin (x86\x64) (new)

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а): Верните свой удаленный скрипт, хочется на него взглянуть :)
Да от него на нынешний момент только основа осталась. Как подключить библиотеку. Он выложен в теме AutoIt на ру.борде.
Orion9 писал(а):Я примерно понял технику: запустить ahk из vbs, передав ему имя. Может и попробую когда, если возникнет потребность :wink:
Совершенно верно. В этой теме и на офсайте есть рыба. Но при реализации куча нюансов вылезла.
ProgMan13
Сообщения: 341
Зарегистрирован: Ср авг 19, 2009 16:07

Сообщение ProgMan13 »

В секции [Script] опция проверки результата скрипта на UTF8:
CheckUTF8Result=1

http://progman13.wincmd.ru/downloads/WinScriptAdv.zip
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

А можно чуть поподробнее, как пользоваться этой опцией? Установил обновление. Не зависимо от значения CheckUTF8Result перед выводом результата в колонку стала появляться надпись WSA.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Браво, ProgMan13, теперь всё заработало :)

И визуально работает чуть быстрее, чем тот же скрипт на Autorun. Будет время, потестирую получше.

AkulaBig
Я так понял, что это сделали примочку для внешних движков. Vbs это не касается.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а): Я так понял, что это сделали примочку для внешних движков. Vbs это не касается.
Понятно. Да, ошибка перестала выскакивать. Самое интересное, что изменение значения ключа не на что не влияет. Его вообще можно не прописывать. Скорость ничуть не изменилась. Но появился неприятный момент. Появляется значение WSA, которое потом меняется на правильное значение. Из-за этого пока не зашло.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

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

Для правильной работы мне потребовалось указать этот ключ и в скрипте сделать вывод в stdout в кодировке 650001. Все другие варианты - либо ANSI, либо кракозябры.

А что такое WSA и почему вы его ловите? Колонка с vbs-скриптом у меня работает нормально независомо от ключа CheckUTF8Result.

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

А, кажется, увидел. Появляется такая надпись перед заполнением данных, но работе не мешает.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а): Если его не прописывать, то будут кракозябры вместо русских имен.
Для правильной работы мне потребовалось указать этот ключ и в скрипте сделать вывод в stdout в кодировке 650001. Все другие варианты - либо ANSI, либо кракозябры.
Теперь понятно. Вы как Штирлиц. Пытать вас приходится :roll:
Как прописать кодировку в выводе? Сейчас-то мне конвертировать приходится через bin. Еще знаю UDF-функционал encoding. Но я понял надо кодовую страницу вывода задать?
Orion9 писал(а): Колонка с vbs-скриптом у меня работает нормально
Я это с первого раза понял и тестирую au3.
Orion9 писал(а): А что такое WSA и почему вы его ловите?
А, кажется, увидел. Появляется такая надпись перед заполнением данных, но работе не мешает.
Работе не мешает, но использовать такой вывод несерьезно.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Я это с первого раза понял и тестирую au3
Ну откуда же я знал, что вы на au3 пишите? :lol: Говорил же вам верните скрипт ) Хотя если он на AutoIt, то в нем я совершенное не силен.
Но я понял надо кодовую страницу вывода задать?
Да.

В Autohotkey это задается командой FileEncoding перед выводом в stdout, т.е. в самом скрипте это выглядит как:

Код: Выделить всё

FileEncoding 65001
content := filename
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а): В Autohotkey
Спасибо. Я думал вы на au3 пишите. Придется самому разбираться.
Orion9 писал(а):AutoIt, то в нем я совершенное не силен.
Какая разница на каком языке писать, если понимаешь алгоритмы программирования. В свое время был у нас препод, который толком не знал, какую кнопку на компе нажать. Но его одного взяли в совместное предприятие и он на премию за алгоритмы купил квартиру, обставил ее. Естественно и женщина хорошая сразу нашлась. А крутые кодеры так и продолжали за зарплату на кнопки давить.
Наверное пока не буду этим вопросом заниматься, так как совсем не устраивает вывод ненужных данных перед заполнением колонок.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Какая разница на каком языке писать, если понимаешь алгоритмы программирования.
Я знаком с Autohotkey V2, но даже чтение скриптов, написанных на Autohotkey V1, может вызывать серьезные трудности из-за отличий в синтаксисе. И все же, когда я просил вас вернуть удаленный скрипт, я надеялся посмотреть на его алгоритм, прежде всего. Что вы хотите вытянуть из консольной утилиты?
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а): Я знаком с Autohotkey V2, но даже чтение скриптов, написанных на Autohotkey V1, может вызывать серьезные трудности из-за отличий в синтаксисе.
Именно из-за этого я от него отказался. Не смог создать тестовый скрипт на версии 2. Решил, что в дальнейшем запутаюсь в нем.
Orion9 писал(а):когда я просил вас вернуть удаленный скрипт, я надеялся посмотреть на его алгоритм, прежде всего.
Я выше написал, где скрипт лежит. А у меня его нет. Он давно уже изменен.
Orion9 писал(а):Что вы хотите вытянуть из консольной утилиты?
Из консольной ничего не вытянешь. Потому что она мелькает при работе. Поэтому приходится использовать библиотеку. А значит использовать либо au3, либо ahk.
Аватара пользователя
Monarch-LFV
Сообщения: 360
Зарегистрирован: Пн июл 22, 2019 13:20

Сообщение Monarch-LFV »

AkulaBig писал(а):Из консольной ничего не вытянешь. Потому что она мелькает при работе.
Я на VBS со сторонними утилитами обычно вытягиваю не через StdOut, а через временный файл, вызов примерно такой:

Код: Выделить всё

program="%commander_path%\...\program.exe"
WshShell.run "cmd /c """"" & program & """ -params""" & """>""" & txtfile & """", 0, True
А потом закидываю в переменную (<=32768) содержимое текстового файла, его удаляю, а с переменной делаю парсинг построчно на предмет нужной информации. Никакого окна не мелькает.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig писал(а):Поэтому приходится использовать библиотеку. А значит использовать либо au3, либо ahk.
Ну так что вы хотели вытянуть-то? :)

Добавлено спустя 3 минуты:
Monarch-LFV писал(а):А потом закидываю в переменную (<=32768) содержимое текстового файла, его удаляю, а с переменной делаю парсинг построчно на предмет нужной информации. Никакого окна не мелькает.
Рабочий способ :)
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а): Ну так что вы хотели вытянуть-то? :)
Ну а что можно вытянуть из MediaInfo? Тестирую разные способы получения информации и программирование на разных скриптовых языках.
Orion9 писал(а):Рабочий способ :)
Отдельно пробовал этот метод. Смущает, что надо создавать временный файл. Надо будет попробовать в составе скрипта. Хотя сначала надо будет попробовать использовать всякие прожки, скрывающие вывод.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig
Понял. Больше для тестов. Просто Monarch-LFV верно отметил, что TCMediaInfo может вытянуть что угодно и как угодно. Благо автор плагина постарался :)

Что касается мелькания консоли, то я никакой специалист в системных делах, но ряд каких-то техник существует. В Autohotkey я нашел в сети такой подход, может вам пригодится чем)

Код: Выделить всё

RunWaitOne(command) {
local sOut
dhw := A_DetectHiddenWindows
pid :=0    
    DetectHiddenWindows true
    Run A_ComSpec " /k",, "Hide", &pid
    WinWait "ahk_pid " pid
    
    DllCall("AttachConsole", "UInt", pid)
    DetectHiddenWindows dhw

    shell := ComObject("WScript.Shell")
    exec := shell.Exec(A_ComSpec . " /C " . command)    
    sOut := exec.StdOut.ReadAll()
    
    DllCall("FreeConsole")
    if ProcessExist(pid)
       ProcessClose pid
return sOut
}
Ответить