Orion9
|
Posted: Sat Apr 13, 2024 14:17 Post subject: |
|
|
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 имеет свойство открывать меню не совсем там, где надо
По поводу стиля и шрифтов, не заморачивайтесь. Я просто спросил, потому как не был уверен, насколько это сложно было бы реализовать. А вдруг каким-то чудом не так сложно! Хотя, судя по тому, как это делают на 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 |
|
|