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 ... 157, 158, 159 ... 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
Mrak_Tlen



Joined: 08 Oct 2024
Posts: 8

Post (Separately) Posted: Mon Dec 16, 2024 01:41    Post subject: Reply with quote

А Авторан еще не научился вгрызаться в контекстное меню, чтобы там нагородить своих подменю?
Back to top
View user's profile Send private message
yahuu



Joined: 22 Jun 2023
Posts: 30

Post (Separately) Posted: Wed Dec 18, 2024 13:06    Post subject: Reply with quote

Выберите два или более файлов, выполните следующий код, StrReplace не заменил auCR.

Code:

SetHotkeyAction /K:A /H:F1 xxx
Func xxx()
   Local ListSel= GetSelectedItems(3, 0)
   Local Name = StrPart(ListSel, auCR, 2)
   msgbox(Name)
   msgbox(StrReplace(Name, auCR, 'aaa'))
EndFunc
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 784

Post (Separately) Posted: Wed Dec 18, 2024 20:38    Post subject: Reply with quote

Mrak_Tlen wrote:
А Авторан еще не научился вгрызаться в контекстное меню, чтобы там нагородить своих подменю?

Ну, такого еще, насколько мне известно, нет Smile Хотя меню можно повесить практически куда угодно функцией ControlSetMouseAction:
https://total.darkhost.ru/wiki/lib/exe/fetch.php?cache=&media=ru:autorun:documentation2x:tc_window_index_ru.png

У меня уже четыре меню так вызываются в трех областях окна ТС. Причем два из них в заголовке - одно создается из бар-файла, другое - из текста, формируемого в скрипте. И это я еще не брался за развешивание как следует Laughing
 Hidden text


Доделал наконец фичу, над которой работал больше недели. По-моему, получилось неплохо:



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

 Подробнее

А вот вам и сборочка для удобных тестов:
https://www.upload.ee/files/17528244/TOTALCMD.7z.html

 Hidden text


Собрал в нее все самое интересное, что было за последний год в этой теме.) Фактически это чистый ТС и скрипты на Autorun. Некоторые другие плагины и утилиты включены только по необходимости, т.к. они тоже завязаны на скрипты Autorun.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 784

Post (Separately) Posted: Thu Dec 19, 2024 00:21    Post subject: Reply with quote

yahuu wrote:
Выберите два или более файлов, выполните следующий код, StrReplace не заменил auCR.

Функция GetSelectedItems разделяет список символами auCRLF, поэтому правильнее будет:
Code:
Local Name = StrPart(ListSel, auCRLF, 2)

При этом символы разделения не попадают в часть строки, разделенную функцией StrPart.

В вашем случае туда попадает не auCR, а auLF, оставшийся при разделении. Проверить это можно заменой символа:
Code:
SetHotkeyAction /K:A /H:F1 xxx
Func xxx()
   Local ListSel= GetSelectedItems(3, 0)
   Local Name = StrPart(ListSel, auCR, 2)
   msgbox(Name)
   msgbox(StrReplace(Name, auLF, 'aaa'))
EndFunc
Back to top
View user's profile Send private message
yahuu



Joined: 22 Jun 2023
Posts: 30

Post (Separately) Posted: Fri Dec 20, 2024 12:18    Post subject: Reply with quote

Orion9 wrote:

Функция GetSelectedItems разделяет список символами auCRLF


спасибо
Back to top
View user's profile Send private message
yahuu



Joined: 22 Jun 2023
Posts: 30

Post (Separately) Posted: Sat Dec 21, 2024 17:56    Post subject: Reply with quote

Можете ли вы предоставить функцию LoopListSel()? Обрабатывайте текущие выбранные элементы по одному в цикле. В настоящее время я реализую это следующим образом. Или есть лучший способ?

Code:

Func separateCompress()
   Local Count = RequestInfo(11005)
   If Count=0 Then SendCommand(2936,-1)
   Local Count = RequestInfo(11005), ListSel = GetSelectedItems(3, 0)
   
   For var = 1 To Count
      Local Name = StrPart(ListSel, auCRLF, var)
      Local FullName = RequestCopyDataInfo("SP") & Name
      Local FullNoExtNewName = getFullNoExtName(RequestCopyDataInfo("SP"), Name) & ".7z"   
      Local sParam = 'a -t7z -mx=5 "' & FullNoExtNewName & '" "' & FullName & '"'
      
      ShellExec %"s7zip" %"sParam"
   Next
EndFunc

Func getFullNoExtName(sPath, fileName)
   #Если имя папки содержит символ ., TotalCMD будет рассматривать содержимое после . как расширение, поэтому необходимо обрабатывать папки отдельно.
   If StrPos(FileGetAttr(sPath & fileName), "D") Then
      Return sPath & fileName
   Else
      If StrPos(fileName, '.') > 0 Then
         Return sPath & StrLeft(fileName, StrPos(fileName, '.', -1)-1)
      Else
         Return sPath & fileName
      EndIf
   EndIf
EndFunc
Back to top
View user's profile Send private message
efesreal



Joined: 23 Dec 2024
Posts: 1

Post (Separately) Posted: Mon Dec 23, 2024 12:31    Post subject: Reply with quote

@yahuu

My code:
Code:

# Get selected files in active panel and fill List object
   SelectedFiles = List()
   selectedList = GetSelectedItems(3,0)
   selectedCount = RequestInfo(1004+RequestInfo(1000))
   For i=1 To selectedCount
      SelectedFiles.add(RequestCopyDataInfo("SP") & StrPart(selectedList, auCRLF, i))
   Next
   
   # Releases the List object
   Free SelectedFiles
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 784

Post (Separately) Posted: Tue Dec 24, 2024 12:48    Post subject: Reply with quote

yahuu wrote:
В настоящее время я реализую это следующим образом. Или есть лучший способ?

Можно использовать объект List, как уже написали выше. Сейчас, наверное, это самый простой и лучший способ, особенное если использовать его свойство Text:

Code:
SetHotkeyAction /K:A /H:F1 SelectedList

Func SelectedList()
   Local aSel = List()
   Local sPath = RequestCopyDataInfo("SP"), j, k = 0
   
   aSel.Text = GetSelectedItems(3, 0)
   
   OutputDebugString("Autorun: Selected=" & aSel.Count)
   For j = 0 To aSel.Count - 1
       OutputDebugString("Autorun: Item[" & j & "]=" & sPath & aSel[j])
       If FileExist(sPath & aSel[j]) Then k += 1
   Next
   ShowHint("Selected: " & aSel.Count & auCRLF & "Processed: " & k)
   Free(aSel)
EndFunc
Back to top
View user's profile Send private message
yahuu



Joined: 22 Jun 2023
Posts: 30

Post (Separately) Posted: Wed Dec 25, 2024 05:22    Post subject: Reply with quote

Спасибо вам
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 337

Post (Separately) Posted: Wed Dec 25, 2024 09:56    Post subject: Reply with quote

А можно-ли плагином отследить например, переключение языка через стандартный диалог настройки? То-есть цель запустить нужный файл в зависимости от выбранного языка.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 784

Post (Separately) Posted: Wed Dec 25, 2024 14:24    Post subject: Reply with quote

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



Joined: 03 Dec 2008
Posts: 337

Post (Separately) Posted: Wed Dec 25, 2024 15:54    Post subject: Reply with quote

Я в инете никого и ничего не боюсь. Тут все смелые Laughing
Лучше подскажите в каком направлении почитать справку.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2688

Post (Separately) Posted: Wed Dec 25, 2024 16:07    Post subject: Reply with quote

AkulaBig
Вот здесь и далее не совсем то обсуждалось, но может, пригодится?
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 784

Post (Separately) Posted: Wed Dec 25, 2024 18:06    Post subject: Reply with quote

AkulaBig wrote:
Я в инете никого и ничего не боюсь. Тут все смелые Laughing

Laughing

Как я уже говорил, после написания своих плагинов, скрипты на Autorun вам будут казаться семечками.) Поэтому говоря "если вас это не пугает", я имел в виду саму идею, что будет крутиться отдельный поток, проверять что-то каждую секунду в фоне, ресурсы жрать нехилые и мешать нормальной работе ТС Laughing

С последними оконными функциями Loopback, конечно, добавил адской мощи плагину. Можно, например, сделать вот так:
 Hidden text

Проверяется строка состояния каждую секунду и смотрится на каком языке написан текст. Делал на скорую руку и без комментариев, но, думаю, вы спокойно разберетесь и переделаете все под себя, если такая фишка действительно будет нужна.

Что касается ресурсов, то у меня сейчас, включая этот, четыре потока крутятся - загрузка ЦПУ от totalcmd.exe в пределах погрешности Laughing

 Кнопка

Включить или отключить можно также по ALT+F1. По умолчанию при запуске ТС поток включен.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 337

Post (Separately) Posted: Wed Dec 25, 2024 18:39    Post subject: Reply with quote

sa wrote:
AkulaBig
Вот здесь и далее не совсем то обсуждалось, но может, пригодится?

По кнопке или хоткею проблем нет сделать даже без Autorun. Хочется именно переключаться стандартным способом.

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

Orion9 wrote:
ресурсы жрать нехилые и мешать нормальной работе ТС Laughing

Собственно чудес не бывает. Понятно, что все идет через таймер. Но ведь таже оконная процедура тоже CALLBACK. Да многие функции через таймер. Вроде лишнего не грузят. Вот и хочется проверить, стоит-ли игра свеч.
Orion9 wrote:

Что касается ресурсов, то у меня сейчас, включая этот, четыре потока крутятся - загрузка ЦПУ от totalcmd.exe в пределах погрешности Laughing

Что и ожидается. Спасибо большое. Мне главное принцип понять, а дальше придумаю, что надо.
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 ... 157, 158, 159 ... 190, 191, 192  Next
Page 158 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