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 Apr 13, 2024 14:17    Post subject: Reply with quote

Quote:
Проверил указанный код на сегодняшней версии, вроде всё работает.

В новейшей 1.2.1.4 у меня опять не работает. Судя по всему, не срабатывает ShowPopupMenu, поскольку в тело функции TitleBarMenu, вызываемой по клику, он таки входит, а дальше просто ничего не происходит. Но если послать em_ команду, то все работает:
Code:
ControlSetMouseAction /R /H:2 0 TitleBarMenu
ControlSetMouseAction /L /K:C /H:2 0 TitleBarMenu

Func TitleBarMenu()
   CommandExec em_title_menu
   If FileExist(BarPath) Then
      ShowPopupMenu /D %BarPath%
   Else   
      MsgBox("Не найден " & BarPath)
   Endif
EndFunc

Code:
[em_title_menu]
button=
cmd=OPENBARMENU %COMMANDER_PATH%\Ini\Title\Menu.bar
iconic=1

Но меня такой вариант не сильно устраивает, т.к. команда OPENBARMENU имеет свойство открывать меню не совсем там, где надо Smile

По поводу стиля и шрифтов, не заморачивайтесь. Я просто спросил, потому как не был уверен, насколько это сложно было бы реализовать. А вдруг каким-то чудом не так сложно! Smile Хотя, судя по тому, как это делают на AutoHotkey, работы там прилично.

На тулбар есть ограничение на количество символов? Я тут сделал более-менее рабочий вариант, в MsgBox все окей, а вот в тулбаре явный срез. Ошибка с кавычками (выше) продолжает переодически появлятся, но не всегда. Пока не понял закономерности.

Code:
ControlSetMouseAction /L /K:C 3  ShowConsoleHint 0
ControlSetMouseAction /L /K:C /K:S 3  ShowConsoleHint 1

Func ShowConsoleHint(pMsg)
Local f, p, out, hint
Local uwdx = %COMMANDER_PATH% & "\Plugins\uwdx\uwdx.exe"

   If Not FileExist(uwdx) Then   
      MsgBox("Не найден " & uwdx)
      Return
   Endif
   
   f = StrPart(ItemAtCursor('text'), auTAB, 1)
   p = SendMessage(RequestInfo(ItemAtCursor('panel') + 8), 13, 500, "" , 2)
   p = StrLeft(p, StrPos(p, "\", -1))
   f = p & f
   If Not FileExist(f) Then   
      MsgBox("Файл не существует " & f)
      Return
   Endif
   
   ProcessExecGetOutput /OEM icacls %COMSPEC% "/c icacls ""%f%"" /q" %p%
   out = icacls
   ProcessExecGetOutput links %uwdx% "/C:1251 /E /I /X:Obj_RealPath /X:Obj_RealSize NTLinks.wdx ""%f%"""
   out = out & auLF & links 
   ProcessExecGetOutput stream %uwdx% "/C:1251 /I NTFSFileStreams.wdx ""%f%"" ""Streams Count"""
   If stream > 0 Then
      ProcessExecGetOutput streams %uwdx% "/C:1251 /I /E /X:8 /X:9 NTFSFileStreams.wdx ""%f%"""
   Else
      streams = "-------- No NTFS Streams -------- "
   EndIf
   out = out & auLF & streams   
   ProcessExecGetOutput filex %uwdx% "/C:1251 /E /I /X:2 /X:8 /X:9 /X:10 /X:11 /X:12 /X:19 /X:20 /X:21 /X:22 FileX.wdx ""%f%"""
   out = out & auLF & filex
   i=1
   while 1
      line=StrPart(out, auLF, i)
      If ERROR = 1 Then Break
      If StrLen(StrTrim(line)) = 0 Or StrPos(line, 'All non-empty') > 0 _
                                   Or StrPos(line, 'не удалось') > 0 Or StrPos(line, '    All') > 0 Then
         i = i + 1
         Continue
      Endif
      hint = hint & line & auLF
      i = i + 1
   Wend   
   
   If Not pMsg Then
      ShowHint(hint)
   Else   
      MsgBox(hint)
   Endif   
EndFunc
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group