Loopback
Примеры никогда не помешают, даже когда они кажутся совсем простыми. Но лучше, конечно, когда есть что-то более функциональное, что можно сразу применить в реальности, как, например, вот этот чёткий фрагмент кода:
Код: Выделить всё
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
Имхо, один из лучших примеров в справке. И отсылка к DebugView совершенно не лишняя. Думаю, что к объекту WMIQuery тоже не лишним будет указать какой-нибудь инструмент, типа
SimpleWMIView, который значительно облегчает жизнь
Я всё-таки добил дополнительные поля. Классно вы сделали. Теперь есть возможность прямо из Autorun создавать и наполнять кастомные поля как хочется. Попробовал достать содержимое с помощью Autohotkey простеньким скриптом, и вот что получилось:
Код: Выделить всё
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
Сам ahk-скрипт вообще три строчки
Код: Выделить всё
#NoTrayIcon
FileAppend A_Args[1] "`n", "*"
FileAppend DriveGetType(A_Args[1]) "`n", "*"
FileAppend FileGetSize(A_Args[1]), "*"
Использовал возврат имени файла, чтобы убедиться, что юникодные имена корректно отрабатываются. Все норм. Скорость тоже рабочая (скорость даже удивила, я бы сказал). Удалось немного сократить количество вызовов AutoHotkey32.exe за счет статических переменных и строчной обработки stdout.
Экперемент удался, т.ч. теперь путь открыт

Правда объекты я буду изучать теперь только в следующем семестре

Но справка, конечно, у вас шикарная. Говорю это еще раз, потому что до сих пор под впечатлением )
P.S. А ведь пульсар прикольный получился.) Сначала даже недооценил его (думал, больше шутка), но теперь вижу, что это очень удобная вещь! Захотел чуть понизить тона - жмешь Ctrl+"-", захотел повысить - Ctrl+"+". Когда тона начинают изменятся, повторно нажимаешь ту же комбинацию в нужный момент, и всё! Я даже подсел на это дело
Добавлено спустя 25 минут:
Ooops... Маленькое уточнение: все-таки юникодные имена файлов корректно не возвращаются через ProcessExecGetOutput. Функция только поддерживает ANSI и OEM?