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 ... 176, 177, 178 ... 184, 185, 186  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Orion9



Joined: 01 Jan 2024
Posts: 716

Post (Separately) Posted: Thu Mar 06, 2025 00:22    Post subject: Reply with quote

Loopback wrote:
В справке говорится, что если

Накосячил, признаю.
Loopback wrote:
Параметры со значением по умолчанию для таких задач и предназначены

После обновления у меня этот хинт стал переодически появляться с тёмным фоном и светло-жёлтымим полями вместо текста, будто сам текст был закрашен. Но так совпало, что я как раз вносил изменения в эту функцию, поэтому решил уточнить лишний раз, держа в голове недавнюю проблему с опусканием параметров по умолчанию, о чём было выше. Но сейчас подозреваю, что проблема была связана с отсутствием Sleep перед SetHintParam("ShowHint", "Reload"). Я только недавно добавил Sleep(50) к тому коду. Видимо, всё-таки стиль не успевал полностью смениться, поэтому и появлялись поля другого цвета. Но ещё понаблюдаю.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 716

Post (Separately) Posted: Sun Mar 09, 2025 12:20    Post subject: Reply with quote

Loopback
Проверил объект Map - всё работает. У вас, случайно, нет планов добавить к нему свойство Count, чтобы можно было перечислять элементы карты? Сейчас для этого требуется создавать временный массив, т.е объект List:

Code:
Local mFiles = Map()
...
Local i, txt
    Local aKeys = list()
    aKeys.Text = mFiles.Keys()
    For i = 0 To aKeys.Count - 1
        txt &= mFiles[aKeys[i]] & auCRLF               
    Next
    MsgBox(txt)
    Free(aKeys, mFiles)


 Полный тестовый код

Код завязан на ini-файлы с секцией ColorTheme:
 Файлы

Делал, основываясь на примере из справки, но мне кажется, в нём есть небольшая неточность:
Code:
If hf <> 0 then

FindFirstFileW может вернуть -1, а значит условие пропустит код, что может привести к интересным результатам ) И ещё одно уточнение: после последнего вызова FindNextFileW необязательно использовать FindClose?

Был ещё один давний вопрос, который забывал спросить. Некоторые wdx-плагины перестают работать после того, как их загружаешь в объект Plugin и потом освобождаешь через Free. Проверить можно на обычной подсказке:
Code:
1exts=*.aucfg;autorun.cfg;*.ahk;*.au3; *.vbs
1fields=Число строк: [=linebreakinfo.CRLF Count]\nБайт прочитано: [=linebreakinfo.Bytes Read]

Если в коде добавить две строки:
Code:
objLineB = Plugin("LineBreakInfo.wdx")
Free(objLineB)

То после запуска ТС, подсказка на панелях не будет работать, т.е. поля плагина в подсказке будут пустыми. Но если убрать Free, то всё нормально.

Можно, конечно, использовать объект без освобождения в некоторых случаях, если он больше не нужен, но будет ли это правильным и не приведёт ли ещё к каким-то проблемам в будущем?
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1483

Post (Separately) Posted: Mon Mar 10, 2025 12:01    Post subject: Reply with quote

Orion9 wrote:
У вас, случайно, нет планов добавить к нему свойство Count, чтобы можно было перечислять элементы карты?

Не планировалось. Не то чтобы это невозможно, но тут просто сам принцип подразумевает перечисление по списку, т.к. индексом является ключ. Понятно, что лучше если бы сразу возвращался объект списка с ключами, но пока в силу имеющихся ограничений делать так не хотелось бы.

Orion9 wrote:
есть небольшая неточность

Согласен.

Orion9 wrote:
FindClose

Надо, конечно. Делал для проверки DllCall, так он и пошел незаконченный в пример.

Orion9 wrote:
Некоторые wdx-плагины перестают работать после того, как их загружаешь в объект Plugin и потом освобождаешь через Free.

Выглядит вполне вероятно, учитывая что всё находится в едином адресном пространстве. Надо будет посмотреть.

Orion9 wrote:
Можно, конечно, использовать объект без освобождения в некоторых случаях, если он больше не нужен, но будет ли это правильным и не приведёт ли ещё к каким-то проблемам в будущем?

Если создать его однократно глобально или со Static - почему бы и нет.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 716

Post (Separately) Posted: Mon Mar 10, 2025 23:59    Post subject: Reply with quote

Loopback, понятно. Собственное перечисление элементов, конечно бы, не помешало. В AutoHotkey, например, используются две переменные:
Code:
For key, value in objMap {

   }

Но объекту Map всё-равно непросто найти применение, думаю, для многих задач сейчас подойдет простая связка двух объектов List:
Code:
Local aKyes = List(), aValues = List()

И перечислять их будет гораздо проще.

На счёт DllCall, понял. А вот с плагинами дела, конечно, похуже. Некоторые плагины не просто перестают работать, но и "валят" Тотал, после сообщений об ошибках. Причём, как отмечалось, далеко не все плагины склонны к такому поведению.

Например, у меня в подсказке к jpg-файлам используются два плагина: wdx4i и jpg-comment. Первый никак не реагирует на то, загружается ли он в коде Autorun или выгружается, а вот второй, сразу после выгрузки, сообщает о фатальной ошибке и валит ТС.
Code:
Crash in plugin jpg-comment.wdx:
Access violation at address 07E58163. Read of address 00000118

Если как-то можно исправить такое поведение, было бы классно. Но на край, можно и не выгружать.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 262

Post (Separately) Posted: Tue Mar 11, 2025 09:17    Post subject: Reply with quote

Loopback
Хотелось-бы обратить ваше внимание на такой нюанс. Попытался удалить ветку реестра с использованием справки. И выяснилось, что на мой взгляд, ключ "~/K" RegDelete не совсем корректно описан в справке. В справке написано, что "/K При пустом параметре или его отсутствии удаляет ключ целиком." На практике выяснилось, что /K действует по разному при удалении пустого параметра имеющего значение или не имеющего. Например:
Code:

   If num <> 6 Then
      # регистрация схемы
      # registration scheme
      RegWrite("HKCU\AppEvents\Schemes\Apps\Wincmd\WincmdConnected\.current", "", "REG_SZ", DirSoundsScheme & "Connect.wav")
   Else
      # удаляем схему
      # delete scheme
      RegDelete("~/K", "HKCU\AppEvents\Schemes\Apps\Wincmd\WincmdConnected\.current")

      RegDelete("~/K", "HKCU\AppEvents\Schemes\Apps\Wincmd\WincmdConnected")
      
      RegDelete("~/K", "HKCU\AppEvents\Schemes\Apps\Wincmd")

Если в команде RegDelete("~/K", "HKCU\AppEvents\Schemes\Apps\Wincmd\WincmdConnected\.current") не прописать "~/K" эта ветка не удалится, если значение .current пусто.
Не знаю, понятно-ли я описал проблему? Если все понятно и вы со мной согласны, хотелось-бы увидеть корретировку описания в справке.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1483

Post (Separately) Posted: Tue Mar 11, 2025 12:25    Post subject: Reply with quote

Orion9 wrote:
Собственное перечисление элементов, конечно бы, не помешало.

Конструкция for..in давно на всякий случай лежит в todo. Проблема в том, что при необходимости явного освобождения объектов обязательно найдутся те, кто захочет использовать это в виде

for var in List("aa", "bb", "cc")

что неизбежно приведет к утечкам памяти. Разве что принудительно разрешить использовать после in только переменные.

Orion9 wrote:
для многих задач сейчас подойдет простая связка двух объектов List

Сделать так можно, конечно, но тут главное отличие в скорости. Хеш-таблицы намного быстрее работают при необходимости поиска ключевого значения. Да и просто удобнее в ряде случаев. В Autoit я его постоянно использую.

Orion9 wrote:
Если как-то можно исправить такое поведение, было бы классно.

Вероятно, единственный вариант - проверять, загружен ли плагин в данный момент, и если загружен - то не пытаться с ним что-то делать, кроме получения списка полей и данных. Т.е. не загружать повторно библиотеку, не выполнять функции ContentSetDefaultParams и ContentPluginUnloading, и не выгружать библиотеку при освобождении объекта.

Ну а пока не выгружать.

AkulaBig
Под "пустым параметром" в описании к /K имеется в виду параметр функции param. А не фактическая пустота значения в реестре.

Для удаления "HKCU\AppEvents\Schemes\Apps\Wincmd\WincmdConnected\.current", естественно, нужен /K, поскольку без него при пустом значении param будет удалено значение ключа "по умолчанию", а не сам ключ.

Уточню в справке.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 262

Post (Separately) Posted: Tue Mar 11, 2025 13:38    Post subject: Reply with quote

Loopback wrote:
Под "пустым параметром" в описании к /K имеется в виду параметр функции param. А не фактическая пустота значения в реестре.

Я это не сразу понял, но писать из-за этого не стал-бы.
Loopback wrote:
Для удаления "HKCU\AppEvents\Schemes\Apps\Wincmd\WincmdConnected\.current", естественно, нужен /K, поскольку без него при пустом значении param будет удалено значение ключа "по умолчанию", а не сам ключ.

В том-то и дело, что это не естественно, так как пустой ключ реестра в любом языке удаляется без всяких опций.
Loopback wrote:
Уточню в справке.

Да, всего-то надо две строчки. Одна без ключа "~/K" и описанием, что так удаляется значение по умолчанию и вторая с ключом - удаляется сам ключ. И сразу станет все ясно.
Спасибо за понимание.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 716

Post (Separately) Posted: Wed Mar 12, 2025 20:19    Post subject: Reply with quote

Loopback wrote:
Разве что принудительно разрешить использовать после in только переменные.

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

Полезная информация, спасибо.
Loopback wrote:
Ну а пока не выгружать.

Да, видимо, только так. Уже попробовал на LineBreakInfo, вроде пока работает.

AkulaBig
Добавьте алгоритм случайного перебора wav-файлов, будет гораздо веселее и интереснее. У вас сейчас всё-равно целый поток крутится, можно сделать, чтобы каждые 5-10 циклов значения ключей в реестре из него перезаписывались новыми случайными wav-файлами. Ничего сложного, а результат вас точно порадует )

 Hidden text

В этом примере файлы выбираются через " dir /s /b *.wav", но можно взять пример выборки через DllCall, который был выше. Да и сам алгоритм можно сделать или доделать на свое усмотрение.

Orion9 wrote:
Думаю, за неделю где-то сделаю.

Посмеялся )

Видимо, всё-таки придётся выложить как есть, поскольку сейчас много других дел и на Autorun времени почти нет, но многое будет без описания и комментариев.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 262

Post (Separately) Posted: Wed Mar 12, 2025 22:32    Post subject: Reply with quote

Orion9 wrote:
Добавьте алгоритм случайного перебора wav-файлов

Я опирался на тот ваш код. Но уж больно большой объем. Поэтому сделал все по накатанному алгоритму. И сейчас это ведь надо будет Sounds.ini создавать. Да и звуки у меня по темам, а придется еще и в кучу все сваливать. Пока считаю это избыточным.
Orion9 wrote:
Видимо, всё-таки придётся выложить как есть

Делайте, как вы считаете лучше. Вы никому ничего не должны.
Orion9 wrote:
поскольку сейчас много других дел и на Autorun времени почти нет

Я тоже отвлекался.
 Hidden text
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 716

Post (Separately) Posted: Thu Mar 13, 2025 00:21    Post subject: Reply with quote

AkulaBig wrote:
надо будет Sounds.ini создавать. Да и звуки у меня по темам, а придется еще и в кучу все сваливать

Sounds.ini необязателен для случайного перебора, да и в кучу не придется все валить. Главное - найти интересные звуки, что может оказаться не такой простой задачей, как кажется. Но для старта вполне подойдет парочка тестовых наборов. Если хотите, попробуйте:
https://www.upload.ee/files/17847052/Sounds.zip.html
AkulaBig wrote:
Делайте, как вы считаете лучше. Вы никому ничего не должны.

Эт точно. И все же... Не надо ставить дедлайнов, чтобы не было дедэндов )

AkulaBig wrote:
Я тоже отвлекался.

Да, я видел. Времени только не было попробовать, но еще обязательно попробую.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 262

Post (Separately) Posted: Thu Mar 13, 2025 05:33    Post subject: Reply with quote

Orion9 wrote:
попробуйте

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



Joined: 01 Jan 2024
Posts: 716

Post (Separately) Posted: Mon Mar 17, 2025 00:19    Post subject: Reply with quote

Да уж... Не думал, что всё так затянется.

Угораздило меня залезть в заголовок, что и заняло большую часть времени. Хорошо хоть под корень не стал ничего ломать, а только фич новых довесил. Думаю, тем, кому интересна тема заголовка, найдут что-нибудь для себя интересное:
https://www.upload.ee/files/17862038/TC_11.51.7z.html

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

AkulaBig wrote:
Я хотел хотя-бы одну тему создать, но теперь понял, что это будет не в ближайшее время.

Да, со звуками не так всё просто. Можно часами с ними возится. Хорошо, что меня пока R2D2 полностью устраивает в рандомном воспроизведении )
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 262

Post (Separately) Posted: Mon Mar 17, 2025 12:03    Post subject: Reply with quote

Orion9 wrote:
Угораздило меня залезть в заголовок

Да, заголовок суперпрофессиональный получился. Только постоянно появляется надпись pinding... или другие служебные сообщения. Похоже тяжеловато наполнение для постоянного обновления. Хотя конечно это все настраивается. UP, DN без названия. Наверное не всем понятно будет. Видимо не хватает места. Зачем тогда постоянно висит надпись Zyxel Offline? Какое у ней предназначение? Я уж подумал тантрическое. У меня раньше был роутер этой марки. И ведь я не поленился поставить лестницу и посмотреть. Но нет, стоит роутер другой фирмы. Никакого полтергейста Very Happy
С остальным еще не разбирался. Буду потихоньку подсматривать.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 716

Post (Separately) Posted: Wed Mar 19, 2025 00:09    Post subject: Reply with quote

AkulaBig
Смешно у вас в конце получилось, улыбнуло )

AkulaBig wrote:
Да, заголовок суперпрофессиональный получился.

Ну, такой вид заголовок приобрёл не сразу - потребовался целый год, чтобы навесить фич. Первая версия ещё хранится на форуме и она содержит всего 200 строк, но кроме пинга и производительности там ничего нет Smile
https://forum.wincmd.ru/viewpost.php?p=137062
AkulaBig wrote:
Только постоянно появляется надпись pinding... или другие служебные сообщения.

У меня возникла однажды потребность следить за устройствами в сети. Утилит в этом плане, конечно, хватает, например, тот же PingInfoView от NirSoft, но полностью такие утилиты мне не подошли. Решил попробовать сделать свой скрипт ) И хотя эта тема мне была интересна, скрипт я так и не доделал - отчасти потому, что необходимость постепенно отпала, а отчасти потому, что в заголовке одного пинга стало хватать ) Но сам скрипт прикольный и рабочий, просто в нём не хватает немного функционала:
https://www.upload.ee/files/17870332/Ping.7z.html

Ох, помню, не повезло мне с кодом иконки - нашёл какой-то полурабочий вариант, который руками потом пришлось дорабатывать, а сейчас смотрю на этот NumPut и понимаю, что Loopback сделал работу с буфером куда круче и удобнее, чем в самом AutoHotkey! Laughing

Ну, а что касается служебных сообщений, так мне наоборот нравится, когда видно, что в фоне происходит: крутится там вертится, живёт своей жизнью...) Даже специально задержку добавил, чтобы такие сообщения не мелькали слишком быстро )
AkulaBig wrote:
UP, DN без названия. Наверное не всем понятно будет.

Пробовал разные варианты. Больше всего понравились стрелки "вниз" и "вверх". Сейчас их можно добавить к скорости передачи ключом SpeedArrows в файле конфигурации, но смотрятся они хорошо, только если нет разделителя между блоками. В итоге, пришёл к тому, что лучше вообще ничего не добавлять перед объемом трафика и скоростью передачи. Ну, а на крайний случай, если вдруг хочется попробовать - изменения всегда можно внести напрямую в aucfg-скрипт.
AkulaBig wrote:
Видимо не хватает места.

Места, пожалуй, хватит на всё. Но иногда нужно разгрузить заголовок - сделать его более компактным в один клик. Сначала взялся за шаблоны, но потом понял, что лучше сразу сделать переключение всей конфигурации. Тем более, что это даёт возможность менять все параметры сразу, включая геолокацию, настройки пинга и интервалы обновления информеров. Если, например, сделать конфигурацию, где будет отключен пинг, информеры и планировщик, то в заголовке не будет мелькать никакой служебной информации.
AkulaBig wrote:
Зачем тогда постоянно висит надпись Zyxel Offline? Какое у ней предназначение?

Показывает, что устройство в оффлайне. Zyxel, конечно, только для примера - пинговать можно что угодно: сетевые хранилища, роутеры, холодильники, телевизоры и стиральные машинки Mr. Green
AkulaBig wrote:
Я уж подумал тантрическое

Нет, тут больше дзен.) Как сказал один великий дзен мастер, когда ученики спросили его, что им делать с пингом - "Да хоть на стену его повесьте" Mr. Green Ну, стены-то у нас нет, зато есть заголовок ТС Mr. Green Так что будем и дальше развешивать ненужные датчики ))
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 262

Post (Separately) Posted: Wed Mar 19, 2025 11:52    Post subject: Reply with quote

Orion9 wrote:
мне наоборот нравится, когда видно, что в фоне происходит

Дак эти сообщения полностью стирают данные. Пусть где-нибудь в уголке живут своей жизнью, но не на весь заголовок.
Orion9 wrote:
Больше всего понравились стрелки "вниз" и "вверх".

Круто. Надо себе забрать.
Orion9 wrote:
Zyxel, конечно, только для примера

Увидел, что это у вас ручками вбито. Все ясно. а я думал автоматом определяется.
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 ... 176, 177, 178 ... 184, 185, 186  Next
Page 177 of 186

 
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