Так это родной индикатор ТС? Тогда не удивительно, почему он так органично смотрится, особенно при изменениях размера окна и прочих перерисовках.
Loopback
Спасибо за наводку, попробую со Sleep и WinSetState. Видимо, получится.
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Да вы и так уже много сделали! А с новым функционалом возможностей стало еще больше. Я даже попробовать все не успел. Жаль, что сейчас времени уже не будет еще поизучать справку, но там действительно столько всего интересного прибавилосьВряд ли. До времени подобных свистелок ещё далеко.
Код: Выделить всё
RunThread ThreadFunction
Func ThreadFunction
Local sPath, sName
While 1
sPath = RequestCopyDataInfo("SP")
sName = RequestCopyDataInfo("SN")
sPath = sPath & sName
# выводим путь, просматривать можно с DebugView
# выполнение цикла при этом не блокируется
OutputDebugString("Autorun: Path = " & sPath)
Sleep(1000)
Wend
EndFunc
Код: Выделить всё
Pragma AutorunPluginFields "FileName:::GetTestValue" "DriveType:::GetTestValue" "FileSize:::GetTestValue"
Global AHKV2 = %COMMANDER_PATH% & "\Scripts\Ahk\AutoHotKey32.exe"
Func GetTestValue(FileName, FieldIndex, UnitIndex)
Static pipe, _
akh_fields = %COMMANDER_PATH% & "\Scripts\Ahk\Fields.ahk"
Static file_name, file_size, drive_type
if FieldIndex = 1 then
ProcessExecGetOutput pipe %AHKV2% '"%akh_fields%" "%FileName%"'
file_name = StrPart(pipe, auLF, 1)
file_size = StrPart(pipe, auLF, 3)
drive_type = StrPart(pipe, auLF, 2)
return file_name
endif
if FieldIndex = 2 then return drive_type
if FieldIndex = 3 then return SizeFormat(file_size, 1, "G", 2)
EndFuncКод: Выделить всё
#NoTrayIcon
FileAppend A_Args[1] "`n", "*"
FileAppend DriveGetType(A_Args[1]) "`n", "*"
FileAppend FileGetSize(A_Args[1]), "*"Код: Выделить всё
Func GetTestValue(FileName, FieldIndex, UnitIndex)
Static pipe, _
akh_fields = %COMMANDER_PATH% & "\Scripts\Ahk\Fields.ahk"
Static file_name, file_size, drive_type, c = 0, f = 0
f = f + 1
if FieldIndex = 1 then
ProcessExecGetOutput pipe %AHKV2% '"%akh_fields%" "%FileName%"'
file_name = StrPart(pipe, auLF, 1)
file_size = StrPart(pipe, auLF, 3)
drive_type = StrPart(pipe, auLF, 2)
c = c + 1
OutputDebugString("Autorun: f = " & f & " c = " & c)
return file_name
endif
if FieldIndex = 2 then return drive_type
if FieldIndex = 3 then return SizeFormat(file_size, 1, "G", 2)
EndFuncКод: Выделить всё
ControlSetMouseAction /L /B:7 17 AutorunStatus 0
ControlSetMouseAction /R /B:7 17 AutorunStatus 1
Func AutorunStatus(lParam)
Local vars
vars = GetState("vars")
if lParam = 1 then
ClipPut(vars)
ShowHint("Информация скопирована в буфер")
Sleep(300)
WinSetState(23)
endif
OutputDebugString(vars)
EndFuncДля GetWMIValue указаноOrion9 писал(а):тоже не лишним будет указать какой-нибудь инструмент, типа SimpleWMIView
Судя по коду - да. Довольно странно, почему было сделано так. Нужно посмотреть, вроде ничего не мешает получить и юникод.Orion9 писал(а):все-таки юникодные имена файлов корректно не возвращаются через ProcessExecGetOutput. Функция только поддерживает ANSI и OEM?
Да, как-то про нее я подзабыл, давно надо было добавить.Orion9 писал(а):Одна OutputDebugString чего стоит!
Посмотрю.Orion9 писал(а):Кажется, ClipPut обрезает текст, можете это подтвердить?
ПожалуйOrion9 писал(а):или это уже лишним будет
Такого нет.Orion9 писал(а):или такого нет в ТС
Странно, проверю.Orion9 писал(а):Ни WDX Guide, ни uwdx не отображают данные полей Autorun. С чем это связано? Ведь в наборе колонок все работает.
Кажется что-то было, но вроде уже было исправлено, в пока не выложенной версии.Orion9 писал(а):Кажется, WinSetState(21) не возвращает окно в доступное состояние.
Вы за 15 лет такую справку замутили, что тут не один день понадобится, чтобы всю ее изучить. Я туда еще тупо не дошелДля GetWMIValue указано
Код: Выделить всё
ControlSetHint /F /D:50 /B:7 17 "HintFunc"
Func HintFunc()
Local A_Version, A_Copyright, A_DateTime, A_Wdx = AUTORUN_PATH & "\Autorun.wdx"
If IsPressed (0x10) Then Return GetState("libs")
If IsPressed (0x11) Then Return GetState("threads") & auCR & GetState("procs")
A_Version = FileGetVersion(A_Wdx, "FileVersion")
A_Copyright = FileGetVersion(A_Wdx, "LegalCopyright")
A_DateTime = FileGetTime(A_Wdx)
Return "Версия: " & A_Version & auCR & "Авторские права: " & A_Copyright & auCR & "Дата изменения: " & A_DateTime
Return GetState("paths")
EndFuncКод: Выделить всё
Func HintFunc()
Local A_Version, A_Copyright, A_DateTime, A_Wdx = AUTORUN_PATH & "\Autorun.wdx"
If IsPressed (0x10) Then Return GetState("libs")
If IsPressed (0x11) Then Return GetState("threads") & auCR & GetState("procs")
A_Version = FileGetVersion(A_Wdx, "FileVersion")
A_Copyright = FileGetVersion(A_Wdx, "LegalCopyright")
obj = Plugin("FileDateTime")
if ERROR = 0 then
obj.FileName = A_Wdx
A_DateTime = StrFormat("%.0f", obj.GetValue(3))
Free(obj)
else
A_DateTime = "Error " & ERROR
endif
Return "Версия: " & A_Version & auCR & "Дата изменения: " & A_DateTime & auCR & "Авторские права: " & A_Copyright
EndFuncЕсли что, последнее время справка делается в соавторстве. Она бы в любом случае была, но вряд ли такого качестваOrion9 писал(а):Вы за 15 лет такую справку замутили, что тут не один день понадобится, чтобы всю ее изучить.
Наверно так?Orion9 писал(а):Как отформатировать FileGetTime() средствами самого Autorun?
Код: Выделить всё
Date("", A_DateTime) & " " & Time ("", A_DateTime)Похоже справка не так уж хороша?Orion9 писал(а):Поскольку функции как отформатировать timestamp я не нашел,
По моему мнению совершенно избыточная информация, не дающая ничего к функциональности. Да и не факт, что это в принципе можно реализовать в разрезе отдельной библиотеки, даже если бы вдруг захотелось сделать.Orion9 писал(а):сводную статистику по плагину
Да, проблема есть, причем более глобальная, не только с ClipPut. Спасибо, исправлю.Loopback писал(а):Кажется, ClipPut обрезает текст, можете это подтвердить?
Проверил, всё везде показывается...Loopback писал(а):Ни WDX Guide, ни uwdx не отображают данные полей Autorun. С чем это связано? Ведь в наборе колонок все работает.
Да не, дело было не в бомбинеLoopback писал(а):Похоже справка не так уж хороша?![]()
Мы легких путей не ищем )Loopback писал(а):А так, нуу... можно и так, конечно![]()
Ну, это вы зря. Пользу от такой статистики я усвоил еще со второго терминатораLoopback писал(а):По моему мнению совершенно избыточная информация, не дающая ничего к функциональности.
Да дело не в этом. Интересно, что там крутится-вертится в фоне, когда Autorun работает. Подробности вы сделали (GetState), а вот обобщенных данных нет.Loopback писал(а):Если очень нужно, импорт/экспорт можно посмотреть плагином FileInfo или подобным.
Завтра посмотрю. Скорее всего опять проблема с пробелами в путях. Другого объяснения пока нет.Loopback писал(а):Проверил, всё везде показывается...
Код: Выделить всё
Func SetPulsar(nParam)
local a, b, s, l
static t = 0
if Pulsar = 1 then
Pulsar = 0
Return
endif
Pulsar = 1
if nParam = 1 then
a = 1
b = 2
s = 1
else
a = 2
b = 1
s = -1
endif
While Pulsar = 1
For j = a To b step s
For i = 1 To 75
SetBackGround(j)
Sleep(25)
l = l + 1
t = t + 1
if Pulsar = 0 then Break
If IsPressed (0x1B) Then
Pulsar = 0
Break
endif
Next
if Pulsar = 0 then Break
Next
Wend
ShowHint("Изменений тонов: " & l & auCRLF & "Всего изменений: " & t)
Sleep(1000)
WinSetState(23)
EndFunc
Код: Выделить всё
All columns:
[0] -> Autorun (Int32)
[1] -> FileName (UnicodeString)
[2] -> DriveType (UnicodeString)
[3] -> FileSize (UnicodeString)Код: Выделить всё
All column values:
Autorun :
FileName :
DriveType :
FileSize :Это я неправильно понял, думал речь просто про получение информации о полях (название, тип).Orion9 писал(а):Не знаю, в чем может быть проблема. Жаль, что вы ее не можете воспроизвести. Ну и ладно. Главное, что в колонках все работает.