Обнаружена неприятная особенность плагина: при невозможности открытия файла (для подсчёта КС) он валится так, что обойти в скрипте на LUA невозможно (или я не нашёл как).
Например. В скрипте написано такое:
Code: Select all
local fn=win.GetEnv('USERPROFILE') .. '\\NTUSER.DAT'
local www=Plugin.SyncCall("E186306E-3B0D-48C1-9668-ED7CF64C0E65", "gethash", 'MD5', fn)
far.Show(www)
При выполнении скрипта получаю:
Code: Select all
╔══════════════════ Error ═══════════════════╗
║ Can not calculate hash for ║
║ \\?\C:\Users\PC\NTUSER.DAT ║
╟────────────────────────────────────────────╢
║ { Skip } [ Skip All ] [ Retry ] [ Cancel ] ║
╚════════════════════════════════════════════╝
При этом после Skip в переменную www помещается результат предыдущего вычисления КС.
Определить, что была ошибка, в скрипте не представляется возможным: pcall и xpcall возвращают true! Например:
Code: Select all
local fn=win.GetEnv('USERPROFILE') .. '\\NTUSER.DAT'
return pcall(Plugin.SyncCall,"E186306E-3B0D-48C1-9668-ED7CF64C0E65", "gethash", 'MD5', fn)
возвращает
Code: Select all
╔══════════════════════════════════════╗
║ 1│ true ║
║ 2│ 35d1750061b8382c69ccd119c0237029 ║
╚════════════ 2 arguments ═════════════╝
(то, что указано во второй строке, это - результат вычисления MD5 предыдущего файла!)
Нельзя ли как-нибудь этот вопрос решить? Причём или по параметру Quiet, или по настройке не только возвращать nil, но и блокировать вывод сообщения об ошибке?