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: Sat Sep 06, 2025 13:31    Post subject: Reply with quote

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

Как-то вчера прошел мимо этого комментария, а ведь Autorun очень легко может это сделать, даже пугающе легко. Я бы сказал, он создан для таких задач:
Code:
# Ctrl+Alt+"+"
# увеличение прозрачности окна ТС
SetHotkeyAction /K:C /K:A /V:187 /R /DM SetTransparency 1
# Ctrl+Alt+"-"
# уменьшение прозрачности окна ТС
SetHotkeyAction /K:C /K:A /V:189 /R /DM SetTransparency 2

SetTransparency(0)

Func SetTransparency(nAction)
    Local transp, flags
    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)
          Return
       EndIf
    EndIf   
    If Not WinHasStyle(0x80000, 1) Then WinSetStyle(0x80000, 3)
    If Not DllCall("GetLayeredWindowAttributes", "hwnd", AUTORUN_TCHANDLE, _
                                          "ptr", 0, "byte*", @transp, "dword*", @flags) Then
       ShowHint("Error getting transparancy value")
       WinSetStyle(0x80000, 5)
       Return
    EndIf
    If transp = 0 Then transp = 255
    If nAction = 1 Then transp += 1
    If nAction = 2 Then transp -= 1
    If transp < 100 Then transp = 100
    If transp > 255 Then transp = 255   
    ShowHint("Transparency: " & transp, "", "", 1000)           
    DllCall("SetLayeredWindowAttributes", "hwnd", AUTORUN_TCHANDLE, _
                                          "ptr", 0, "byte", transp, "dword", 2)
    If transp = 255 Then WinSetStyle(0x80000, 5)
    IniWrite %COMMANDER_INI% "Autorun" "Transparency" %transp%   
EndFunc                                         

Хотел ограничиться несколькими строками для демонстрации, но потом понял, что без сохранения в ini это будет "не торт", поэтому пришлось доделать.

A55555, если вы поставили Autorun, посмотрите еще пример сворачивания в трей в справке, напоминает чем-то изменение прозрачности.

Loopback wrote:
Тут еще минус, что она появилась только в Win 8.1

Да, я видел это ограничение. Но с другой стороны, возможность масштабировать экран из настроек Windows появилась не только с Win8?
Loopback wrote:
Но если пользователь ещё значительно увеличит шрифт, то да, может и не уместиться.

Как я понял, это довольно редкий случай, поэтому и находится он в разделе "Специальные возможности". Но по идее его тоже нужно учитывать и держать в голове. Не уверен, правда, что для функционала Autorun это является актуальным.
Loopback wrote:
WinSetState(30, h_WinShutdown)

Работает, но отчасти. Наверное, для полноты картины нужно AUTORUN_TCHANDLE снять с владельца. Кстати, вот действительно полный код для тех, кто будет пользоваться или развивать его дальше, в предыдущий раз я как всегда забыл про "шапку":
 Hidden text

Loopback wrote:
Надо же, уже 200 страниц наговорили

Успокойтесь, сэр. Мы только начали )
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group