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 

Single Post  Topic: Autorun 
Author Message
Orion9



PostPosted: Sun Sep 07, 2025 18:24    Post subject: Reply with quote

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

Вверх - понять могу, но почему вправо? Окно и правда смотрится чуть ниже центра из-за выравнивания по рабочему столу без учета панели задач. Loopback уже предложил решение, но как альтернативный вариант окно можно приподнять функцией WinSetPos. Если позиция будет неоднократно меняться, лучше не использовать флаг WS_VISIBLE при создании окна функцией CreateWindowExW (т.е. станет 0x00C80000 вместо 0x10C80000), а делать его видимым только после всех манипуляций. Вот такой альтернативный вариант вполне приемлим:
Code:
    h_WinShutdown = DllCall("CreateWindowExW", _
                            "dword", 0, _
                            "wstr", "msctls_progress32", _
                            "wstr", "", _
                            "dword", 0x00C80000, _
                            "int", 200, "int", 100, "int", Round(Scale(300)*nTextScale,0), "int", Scale(50), _
                            "handle", , _
                            "handle", 0, "handle", 0, "ptr", 0, _
                            "handle")
                   
    If h_WinShutdown = 0 Then Return 0
    # поверх всех окон
    WinSetState(30, h_WinShutdown)
    # выравнивание по центру рабочего стола   
    WinAlign(h_WinShutdown, 0, DllCall("GetDesktopWindow"))
    # перемещение окна вверх на 50 пикселей   
    WinSetPos("", -Scale(50), "", "", 1, h_WinShutdown)
    # перемещение окна вправо на 50 пикселей
    # WinSetPos(Scale(50), "", "", "", 1, h_WinShutdown)
    # показ окна   
    WinSetState(5, h_WinShutdown)

Если нужен сдвиг вправо, то за него отвечает отдельная строка.

Вообще-то, функционал классный получается, но пока он еще далек от завершения. Как было справедливо отмечено, нужна дополнительная обработка различных сценариев (неожиданное завершение операции, непредвиденные диалоговые окна, кнопка "В фоне" и т.д.), и это нормально. Иногда требуется 1-2 месяца, чтобы довести все до ума, это еще при частом использовании, а не редком.
A55555 wrote:
Надеюсь кроме меня ещё кому-то пригодится.

Сейчас заметил, что "Return" немного не туда поставил, что приводит к появлению подсказки при старте ТС, даже если прозрачность отключена и не используется. Лучше заменить на другой фрагмент:
Code:
 If nAction = 0 Then       
       IniRead transp %COMMANDER_INI% "Autorun" "Transparency" 255
       If transp >= 100 And transp < 255 Then
          WinSetStyle(0x80000, 3)
          DllCall("SetLayeredWindowAttributes", "hwnd", AUTORUN_TCHANDLE, _
                                         "ptr", 0, "byte", transp, "dword", 2)
       EndIf
       Return
    EndIf   

Вообще, Autorun позволяет добавить кучу уникальных фич, которые сам Гислер вряд ли будет когда-то делать. Где-то полгода назад я собирал интересные скрипты, вот перезаливка. С тех пор еще поднакопилось, и когда будет время, обязательно выложу. Например, летом активно юзал подсчет времени у аудио и видео файлов. Гислера тоже просили добавить эту фичу, но когда он ее сделает, не известно. А может и вовсе не сделает. Если вдруг интересно, то вот, прикладываю сразу с подсчетом торрент-файлов:
 Hidden text

 Кнопка

 Кнопка

Поменяйте только путь к библиотеке MediaInfo.dll, у меня это "COMMANDER_PATH & "\Ini\Tools\Libs\". И желательно иметь установленные плагины TCMediaInfo и TCTorrent от Loopback. Во время подсчета, если операция длительная, работает клавиша SHIFT, отображающая прогресс операции в текстовом виде. Подсчет размера торрент-файлов менее востребованная фишка, но если, например, диски под завязку, а файлы имеются, бывает необходимость прикинуть, сколько места они могут занять. Я, к примеру, сталкивался с таким.

А что касается полного экрана, то, разумеется, я видел этот код от Flasher, однако попробовать и обкатать его руки не дошли. У себя я использую TCFS2 для этих целей уже много лет, но со временем доберусь и до Autorun.

Кстати, полный экран не обязательно вызывать только горячей клавишей, можно сделать и в верхнем меню соответсвующую кнопку, тоже будет удобно. В файле меню после HELP_BREAK вставить MENUITEM ":::", em_FullScreen, где em_FullScreen - пользовательская команда для вызыва TCFS2. Возможно, вы знали о таком использовании, но так, на всякий случай написал.
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group