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 ... 204, 205, 206 ... 209, 210, 211  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
A55555



Joined: 06 Feb 2011
Posts: 65

Post (Separately) Posted: Sat Sep 20, 2025 00:16    Post subject: Reply with quote

Orion9 wrote:
В Autorun нет легкого способа работать с графическим интерфейсом, поэтому приходится вызывать vbs-скрипт из autorun-скрипта. Попробуйте заменить функцию SetTorrentDrives() на новый блок, должно помочь:
 Hidden text

Orion9
Спасибо, помогло, окно выбора дисков для поиска на передний план вышло.

Orion9 wrote:
Теперь если CapsLock включен, будет автоматический переход. Если выключен, будет прежнее окно с сообщением. Как говорится "Autorun - мечты сбываются". Осталось только кнопки под это дело обновить:

Спасибо, с автопереходом прям как в мечте, особенно через Everything.
Осталось убрать сообщение перед запуском поиска
 Hidden text

чтоб совсем турборежим при включенном CapsLock повесив выполнение кнопки на клавиши Alt+T (простой) и Alt+P (Everything).


Но режим автоперехода у меня работает и с выключенным и с включенным CapsLock.
При ВКЛюченном CapsLock ищет с предложением сохранить в TXT файл.
При ВЫКЛюченном CapsLock ищет с Автопереходом в конце.

Для того случая когда два объекта находит для одной и той же папки:
- Автопереход + простой поиск - показывается выделенная основная папка (не заходя в неё)

-Автопереход + Everything поиск - показывается результат внутри основной папки (зайдя в неё, перед тобой папка BDMV)


Last edited by A55555 on Sat Sep 20, 2025 01:40; edited 2 times in total
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 908

Post (Separately) Posted: Sat Sep 20, 2025 00:40    Post subject: Reply with quote

A55555
Точно не работает CapsLock?

Сделать "тихий" режим можно тем же образом. Поменяйте фрагмент кода с начальным сообщением на новый код с условием If Not :
Code:
If Not BitAND(DllCall("GetKeyState", "int", 0x14, "short"), 1) = 0 Then
       MsgBox("Поиск данных торрента:" & auCRLF & auCRLF & _
              "Имя: "    & name & auCRLF & _
              "Размер: " & size & auCRLF & _
              "Файлов: " & files & auCRLF & auCRLF & _
              "Диски поиска: " & gDriveInclude & auCRLF & auCRLF & _       
              "Продолжить?", "Autorun", 3+32+0)
       If EXTENDED <> 6 Then Return
    Endif

Работает?
Back to top
View user's profile Send private message
yozhik



Joined: 04 May 2014
Posts: 310
Location: Электросталь

Post (Separately) Posted: Sat Sep 20, 2025 00:49    Post subject: Reply with quote

Loopback
В связи с настройкой подсветки синтаксиса, разъясните, пожалуйста, пару недоумений.

1. Чувствительны к регистру: имена констант, макросов, переменных в плагинах SysInfo и Process. Нечувствительны к регистру: команды условий/циклов/операторов, имена встроенных функций, свойства/методы объектов. Правильно?

2. Чувствительны ли к регистру конструкторы объектов (BinaryFile, List, WMIQuery и т.п.) ?

3. Чувствительны ли к регистру значения параметров <info> в FileGetVersion, <mode> в FinFile?

4. В объектах между методом и скобками допускаются пробелы? Т.е. вот так можно: «obj.Add (Item1, Item2, Item3)» ?

5. В объектах же после точки пробелы допускаются? Т.е. вот так можно: «obj. Clone()» ?

6. В функциях перед скобками допускаются пробелы. Правильно?

7. В параметрах DllCall звёздочка * как указатель на значение после каких имён может быть употреблена? «(ptr|dword)\*», а ещё какие?

Orion9
Я в подсветке ещё кое-чего доделал. А Вы в AkelPad'е AutoComplete'ом пользуетесь? (На всякий случай: это я про окошко, которое появляется пока набираешь, и можно выбрать уже готовый блок: в подсветке все эти автодополнения перечислены в секции Blocks, в самом конце файла.)
_________________
Amo ergo sum
Back to top
View user's profile Send private message
A55555



Joined: 06 Feb 2011
Posts: 65

Post (Separately) Posted: Sat Sep 20, 2025 01:37    Post subject: Reply with quote

Orion9 wrote:
A55555
Точно не работает CapsLock?

У меня клавиатура портативная и гасит лампочку, запутала.

Перепроверил.
При ВКЛюченном CapsLock ищет с предложением сохранить в TXT файл.
При ВЫКЛюченном CapsLock ищет с Автопереходом в конце.
Т.е. с точностью до наоборот.

Orion9 wrote:

Сделать "тихий" режим можно тем же образом. Поменяйте фрагмент кода с начальным сообщением на новый код с условием If Not :
 Hidden text

Работает?

Пушка! Работает!
Через Everything и Alt+P (70501) вообще сказочно. Простым вполне можно чуть подождать, тоже хорошо.

Everything может можно привязать попытку запустить это приложение по указанному пути в свернутом виде при выполнении 70501, перед тем как выскакивает cообщение "окно Everything не найдено". Может и выгружать после поиска, но это уже как-то излишне.
Или привязать это приложение к старту Autorun/TC, чтоб стартовало при запуске свернуто и, если это не целая эпопея, закрывалось вместе с Autorun/TC.
Или может


Last edited by A55555 on Sat Sep 20, 2025 12:55; edited 2 times in total
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 454

Post (Separately) Posted: Sat Sep 20, 2025 10:10    Post subject: Reply with quote

yozhik wrote:
Я в подсветке ещё кое-чего доделал

Скачал весь архив. В mnu у вас и в старых версиях ошибка:

Я ее исправил для себя:

Но хотелось-бы, чтобы вы у себя исправили.
dsl, fea не тестил.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1636

Post (Separately) Posted: Sat Sep 20, 2025 12:36    Post subject: Reply with quote

yahuu

Да, есть такое. Эти функции уже начинают напоминать известный мем Confused

yozhik wrote:
1. Чувствительны к регистру: имена констант, макросов, переменных в плагинах SysInfo и Process. Нечувствительны к регистру: команды условий/циклов/операторов, имена встроенных функций, свойства/методы объектов. Правильно?

2. Чувствительны ли к регистру конструкторы объектов (BinaryFile, List, WMIQuery и т.п.) ?

Нет, все имена переменных, макросов, функций (в т. ч. конструкторов), методов и свойств - не зависят от регистра. Без разницы, в основном плагине или субплагинах. Ключевые слова также не зависят.


yozhik wrote:
3. Чувствительны ли к регистру значения параметров <info> в FileGetVersion, <mode> в FinFile?

Я обычно везде делаю идентификаторы не зависящие от регистра. В тех случаях, когда регистр важен, это указывается в описании к функции. Может где и недоглядел, конечно, но в общем случае так.

Перечисленные функции не исключение.

yozhik wrote:
4. В объектах между методом и скобками допускаются пробелы? Т.е. вот так можно: «obj.Add (Item1, Item2, Item3)» ?

Допускаются.

yozhik wrote:
5. В объектах же после точки пробелы допускаются? Т.е. вот так можно: «obj. Clone()» ?

А вот здесь нет, нельзя.

yozhik wrote:
6. В функциях перед скобками допускаются пробелы. Правильно?

Да.

yozhik wrote:
7. В параметрах DllCall звёздочка * как указатель на значение после каких имён может быть употреблена? «(ptr|dword)\*», а ещё какие?

Может использоваться с любым типом, кроме str и wstr.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 908

Post (Separately) Posted: Sat Sep 20, 2025 14:06    Post subject: Reply with quote

yozhik wrote:
Я в подсветке ещё кое-чего доделал.

Ого! Да там прилично добавилось!
yozhik wrote:
А Вы в AkelPad'е AutoComplete'ом пользуетесь?

Пользуюсь, конечно. Очень удобно, не нужно каждый раз в справку лезть, когда забыл порядок параметров к функции или команде. Я бы и CodeFold чаще использовал, но, к сожалению, он иногда подводит. Функции в функции бывает вкладываются.
 Hidden text

Вот, вроде не сильно запутанный код, а функция JoinHint вкладывается в SetMediaInfo. Что касается подсветки, сейчас она вообще шикарно выглядит. Я немного подправил значение "AREA" в цветовой схеме и отключил жирный с курсивом в настройках, но все остальное смотрится просто класс. Можно заценить на последнем модуле, я его всё-равно собирался приложить в связи с последними изменениями:
 Torrent.aucfg

Все объекты и последние функции, всё подсвечивается.

A55555 wrote:
Через Everything и Alt+P (70501) вообще сказочно.

Согласен. Просто песня. Прошелся сейчас по каталогу "uTorrent\torrents", где у меня хранятся торрент-файлы... аж кайфанул. Не успевашь нажать, как тут же путь к данным открывается на другой панели. Удобно, черт возьми! Вы определенно знали, что хотели, я лишь немного помог воплотить это в жизнь )
Кстати, ALT+P это моя ошибка. Я сначала думал, что не успею втиснуть Everything и использовал эту комбинацию для перехода по пути из текстового файла. Но в последний момент все же добавил Everything, а комбинацию обновить забыл. Как-то не очень очевидно ALT+P для Everything, но это легко поменять.
А касаемо старта, это тоже легко. Проще всего сделать команду, к примеру:
Code:
[em_everything]
cmd=%COMMANDER_PATH%\Soft\Everything.exe
param=-startup

И теперь эту команду можно хоть в кнопку, хоть в хоткей, хоть в автозагрузку ставить. Я обычно не держу эту утилиту у себя в фоне, поэтому вызываю ее из меню при необходимости.
A55555 wrote:
-Автопереход + Everything поиск - показывается результат внутри основной папки (зайдя в неё, перед тобой папка BDMV)

Так возвращает результат Everything, с этим ничего не пожелаешь, если только дополнительно его не обрабатывать. Но вы не заморачивайтесь этим. Как я писал, пустые каталоги нужно видеть, потому что в них может быть ошибка. Если создать 5 каталогов внутри друг друга и положить в последний несколько файлов, то все пять каталогов будут одного размера. В этой структуре нельзя заранее определить какой именно каталог можно отнести к торрент-файлу. Важно, что все каталоги находятся, и вы сами должны принять решение, какой из них нужно ставить на раздачу.
Back to top
View user's profile Send private message
A55555



Joined: 06 Feb 2011
Posts: 65

Post (Separately) Posted: Sun Sep 21, 2025 00:38    Post subject: Reply with quote

Orion9 wrote:
А касаемо старта, это тоже легко. Проще всего сделать команду, к примеру:
Code:
[em_everything]
cmd=%COMMANDER_PATH%\Soft\Everything.exe
param=-startup

И теперь эту команду можно хоть в кнопку, хоть в хоткей, хоть в автозагрузку ставить. Я обычно не держу эту утилиту у себя в фоне, поэтому вызываю ее из меню при необходимости.

Orion9
Спасибо. Поставил запуск этой программы в ваш код Torrent.aucfg
Code:
CommandExec em_everything

Теперь не нужно вручную запускать Everything.exe и свернуто сразу в трей.

Но не смог понять, есть ли такое место в коде, чтоб по-хитрому указать этот запуск.
Когда пользуюсь обычным поиском, то чтоб эта команда не выполнялась, когда через Everything_поиск выполнялась команда запуска?


Last edited by A55555 on Sun Sep 21, 2025 01:08; edited 1 time in total
Back to top
View user's profile Send private message
yozhik



Joined: 04 May 2014
Posts: 310
Location: Электросталь

Post (Separately) Posted: Sun Sep 21, 2025 00:49    Post subject: Reply with quote

AkulaBig
Ух, да, точно — это я в mnu забыл про свои пользовательские переменные. Заменил их на стандартные. Спасибо.

Loopback
Спасибо!!
Loopback wrote:
В тех случаях, когда регистр важен, это указывается в описании к функции. Может где и недоглядел

Нет, всё там у Вас на месте, недоглядов нету. Это я для пущей уверенности спросил.

---

В общем, в подсветке по последним замечаниям всё поправил, кое-чего добавил, пару косяков выправил. Обновляйтесь, пожалуйста. Дальше будем поглядывать, может ещё что проявится.

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

Orion9
CodeFold вроде починил (только что, чуть не забыл про него). Пример Ваш (спасибо за него) теперь корректно обрабатывается, но буду ещё присматриваться.
_________________
Amo ergo sum
Back to top
View user's profile Send private message
A55555



Joined: 06 Feb 2011
Posts: 65

Post (Separately) Posted: Sun Sep 21, 2025 01:58    Post subject: Reply with quote

Loopback
подскажите пожалуйста, что не так с этой записью, Everything не закрывается
Code:
# After this line all actions are performed when TC closing
# После этой строки все действия выполняются при закрытии TC
Pragma AutorunFinalizeSection
If ProcessExist /F '%commander_path%\Everything.exe' Then
ProcessTerminate /F /TT /A /W '%commander_path%\Everything.exe'
EndIf


Так тоже не сработало Sad
Code:
Pragma AutorunFinalizeSection
ShellExec %commander_path%\everything.exe -exit
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 454

Post (Separately) Posted: Sun Sep 21, 2025 11:43    Post subject: Reply with quote

A55555 wrote:
Так тоже не сработало

Code:
# After this line all actions are performed when TC closing
Pragma AutorunFinalizeSection
ShellExec(COMMANDER_PATH & "\Utils\Everything\Everything.exe", "-exit")
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 908

Post (Separately) Posted: Sun Sep 21, 2025 13:33    Post subject: Reply with quote

A55555 wrote:
Но не смог понять, есть ли такое место в коде, чтоб по-хитрому указать этот запуск.

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

Кнопки две, но функция вызывается одна, только с разными параметрами:
Code:
RegisterCommand 70500 "TorrentFindData" 0
RegisterCommand 70501 "TorrentFindData" 1

Параметр "1" означает, что вход со второй кнопки. Этот код передается переменной bEverything:
Code:
Local bEverything = nMode

Теперь если bEverything = 1 (или логическое "true"), то в функции можно предусматривать код, который будет выполняться только для ветки с Everything. Т.е. можно сделать так:
Code:
If bEverything Then CommandExec em_everything

Эту строку можно вставить сразу после Local bEverything = nMode или дальше по коду, например после сообщения с подтверждением о поиске. Но вероятно потребуются дополнительные проверки, запущена Everything или нет, чтобы не выполнять команду запуска каждый раз.

Кстати, для выхода можете сделать еще одну команду и вызывать ее, когда нужно:
Code:
[em_everything_exit]
cmd=%COMMANDER_PATH%\Soft\Everything.exe
param=-exit

yozhik wrote:
В общем, в подсветке по последним замечаниям всё поправил, кое-чего добавил, пару косяков выправил. Обновляйтесь, пожалуйста.

Вот это я понимаю Commits так Commits, не то, что у ленивого финна (думаю, вы поняли о чем речь).

Если бы я знал, что вы так серьезно возьметесь за дело, я бы более тщательно подошел к этому вопросу, поскольку у меня накопилось немало кода на Autorun, который стоит проверить на вашем хайлайтере. Но первые впечатления очень приятные. CodeFold вроде работает, про подсветку я уже писал. Теперь остается только внимательно всё пройти, изучить и зафиксировать. Со временем так и сделаю.

Это, конечно, не имеет отношения к топику, но можно ли в хайлайтере к бар-файлам сделать, чтобы индексы иконок отдельно подсвечивались, а команды выделялись другим цветом, т.е. отличным от имени ключа? Иначе такая запись сливается в одну строку:
Code:
cmd8=em_everything

Индекс 220:
Code:
button8=%COMMANDER_PATH%\Wcmicons.dll,220


Loopback
Чтобы не затерялось. У вас нет планов добавить к плагину TCTorrent возможность возврата списка содержимого торрент-файлов через wdx-поле? Можно через указатель на буфер сделать, или еще что-то придумаете. Хотелось бы через Autorun вытягивать такой списочек. И кстати, не срочно. В ближайший месяц-два все-равно больше не смогу такими ударными темпами развивать функционал, хотя идея находить недокаченные раздачи довольно заманчива.
Back to top
View user's profile Send private message
A55555



Joined: 06 Feb 2011
Posts: 65

Post (Separately) Posted: Sun Sep 21, 2025 23:02    Post subject: Reply with quote

AkulaBig wrote:
A55555 wrote:
Так тоже не сработало

Code:
# After this line all actions are performed when TC closing
Pragma AutorunFinalizeSection
ShellExec(COMMANDER_PATH & "\Utils\Everything\Everything.exe", "-exit")

AkulaBig
Спасибо.
Но тоже не получается выгрузить. Путь на свой я менял.
И командой
Orion9 wrote:
Кстати, для выхода можете сделать еще одну команду и вызывать ее, когда нужно:
Code:
[em_everything_exit]
cmd=%COMMANDER_PATH%\Soft\Everything.exe
param=-exit

тоже не хочет выгружаться.
Но через горячие клавиши для em_everything_exit, например Ctrl+Alt+Q срабатывает.
Ставлю после
Code:
# After this line all actions are performed when TC closing
Pragma AutorunFinalizeSection
CommandExec em_everything_exit

не закрывает.

Orion9 wrote:
Да, есть такое место. Правда не знаю, будет ли это удобно, но можете попробовать.

Кнопки две, но функция вызывается одна, только с разными параметрами:
Code:
RegisterCommand 70500 "TorrentFindData" 0
RegisterCommand 70501 "TorrentFindData" 1

Параметр "1" означает, что вход со второй кнопки. Этот код передается переменной bEverything:
Code:
Local bEverything = nMode

Теперь если bEverything = 1 (или логическое "true"), то в функции можно предусматривать код, который будет выполняться только для ветки с Everything. Т.е. можно сделать так:
Code:
If bEverything Then CommandExec em_everything

Эту строку можно вставить сразу после Local bEverything = nMode или дальше по коду, например после сообщения с подтверждением о поиске. Но вероятно потребуются дополнительные проверки, запущена Everything или нет, чтобы не выполнять команду запуска каждый раз.

Orion9
Спасибо, работает.
В настройках самой Everything галочка на опции "разрешить несколько копий программы" снята и вроде всё нормально.
Команду для выгрузки Everything
Code:
CommandExec em_everything_exit

поставил в Torrent.aucfg в конец кода функции
Code:
Func TorrentFindData(lParam, nMode)

но как и другие способы выгрузки Everything не срабатывает, но и не мешает ничего не ломает.
Пробовал и в сам Autorun.cfg
Code:
# После этой строки все действия выполняются при закрытии TC
Pragma AutorunFinalizeSection
CommandExec em_everything_exit

не получается.

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

Спасибо. Уже очень хорошо, но буду надеяться на продолжение по недокачанным.


Last edited by A55555 on Mon Sep 22, 2025 00:48; edited 2 times in total
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1636

Post (Separately) Posted: Sun Sep 21, 2025 23:42    Post subject: Reply with quote

A55555 wrote:
Так тоже не сработало

В общем-то это и есть правильный вариант. У меня так срабатывает. Так что вряд ли тут Autorun при делах.

Могу только добавить, что если процесс everything запущен от имени администратора, а тотал от пользователя, то ProcessTerminate, естественно, не сработает. Но вариант с -exit в этом случае должен открыть диалог повышения привилегий, и если согласиться, то everything успешно закрывается.

Orion9 wrote:
У вас нет планов добавить к плагину TCTorrent возможность возврата списка содержимого торрент-файлов через wdx-поле?

Интересно, с чего бы им вдруг быть? Smile

Но это скорее всего не получится даже чисто технически. Чтобы уместить большой список нужно передавать плагину большой буфер, чтобы в него этот список мог уместиться. А тотал (и соответственно Autorun) предоставляет буфер размером 4096 байт, т. е. всего 2 Кб для юникодной строки.

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



Joined: 01 Jan 2024
Posts: 908

Post (Separately) Posted: Mon Sep 22, 2025 00:41    Post subject: Reply with quote

A55555 wrote:
Но через горячие клавиши для em_everything_exit, например Alt+Ctrl+Q срабатывает.

Да, похоже только в секции финализации не срабатывает. У меня не было времени проверить в кнопке, но если вставить в командную строку TC и выполнить em_everything_exit, то Everything выгружается хоть от Администратора была запущена, хоть от простого пользователя.
A55555 wrote:
поставил в Torrent.aucfg в конец кода функции

Тогда тоже используйте условие If bEverything, но лучше в секцию финализации такое вставлять. Может Loopback найдет в чем причина несрабатывания.
Loopback wrote:
Интересно, с чего бы им вдруг быть?

Просто на предыдущей странице я писал:
 Hidden text

Loopback wrote:
И даже если бы это было возможно, непросто найти объяснение целесообразности вывода в одно поле списка файлов (потенциально огромного) для обычного пользователя.

Об этом речи не было. Изначально речь шла о недокументированном вызове функции напрямую из библиотеки, либо, если делать wdx-поле, то передавать в это поле адрес буфера со списком и размер этого буфера (размер можно и во второе поле, например). В Autorun принимать этот буфер через BaseAddress:
Code:
obj = Buffer(<InitialSize>[, <BaseAddress>])
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 ... 204, 205, 206 ... 209, 210, 211  Next
Page 205 of 211

 
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