John Doe wrote: ↑Wed 06 Feb, 2019 15:59
Хотя я когда-то и это макросил.
Придётся макросить Enter, CtrlPgDn, что-то делать с двойным кликом.
Проще намакросить диалог создания архива через rar.exe. Проблем с юникодом, кстати, не будет.
Нарисовать диалог с выбором имени архива и параметров для rar (метод сжатия, solid и пр.). Подготовить временный список выделенных файлов. Запустить rar.exe, возможно, с перехватом вывода и показом прогресса. Диалог может быть более универсальным с возможностью выбора других архиваторов. Всё руки не доходят сделать...
Smitis wrote: ↑Thu 07 Feb, 2019 08:14
Нарисовать диалог с выбором имени архива и параметров для rar (метод сжатия, solid и пр.). Подготовить временный список выделенных файлов. Запустить rar.exe, возможно, с перехватом вывода и показом прогресса. Диалог может быть более универсальным с возможностью выбора других архиваторов.
Если минималистично, то можно и
!?$Archiver$&Архиватор?rar.exe! a !?$ArchiverAddOptions$&Опции?-s! !?$ArchivePath$&Файл архива?! @!@!
%ArcliteWantedState=msgbox("Select an archiver","OK - arclite, Cancel - MultiArc",0x20000);
AltShiftF9 menu.select("arclite") Enter
$If (dlg.getvalue(Dlg.CurPos,0) != %ArcliteWantedState) Space $End
Enter Esc ShiftF1
Smitis wrote: ↑Wed 06 Feb, 2019 10:42
К сожалению, вызвать диалог MultiArc можно только через ShiftF1.
Пользоваться же ArcLite через меню плагинов, в том числе и через макрос, мешает давний баг https://bugs.farmanager.com/view.php?id=3217
Для обхода этого бага использую такой макрос (Shift+F1 - ArcLite, Shift+F2 - MultiArc):
local arclite_plugin_guid = "65642111-AA69-4B84-B4B8-9249579EC4FA"
local multiarc_plugin_guid = "C5508DDB-5175-4736-9A10-C8F6EED7B32F"
Macro {
area="Shell"; key="ShiftF1"; flags=""; description="Запуск ArcLite по ShiftF1";
condition=function() return Plugin.Exist(arclite_plugin_guid) and Plugin.Exist(multiarc_plugin_guid) end;
action = function()
local arclite_plugin_uuid = win.Uuid(arclite_plugin_guid)
local setting_name = "handle_create" --Handle archive creation (Shift-F1)
local F = far.Flags
local arclite_plg_handle = far.FindPlugin(F.PFM_GUID, arclite_plugin_uuid)
local pinfo = far.GetPluginInformation(arclite_plg_handle)
if pinfo then
local obj = far.CreateSettings(arclite_plugin_uuid, F.PSL_ROAMING)
local result = obj:Get(0, setting_name, F.FST_QWORD)
obj:Free()
if result == 0 then --[ ] Handle archive creation (Shift-F1)
Plugin.Config(arclite_plugin_guid)
Keys("Space") --включаем Handle archive creation
Keys("Enter")
end
end
Keys("ShiftF1")
if Menu.Select("arclite", 0) > 0 then
Keys("Enter")
end
end;
}
Macro {
area="Shell"; key="ShiftF2"; flags=""; description="Запуск MultiArc по ShiftF2";
condition=function() return Plugin.Exist(arclite_plugin_guid) and Plugin.Exist(multiarc_plugin_guid) end;
action = function()
local arclite_plugin_uuid = win.Uuid(arclite_plugin_guid)
local setting_name = "handle_create" --Handle archive creation (Shift-F1)
local F = far.Flags
local arclite_plg_handle = far.FindPlugin(F.PFM_GUID, arclite_plugin_uuid)
local pinfo = far.GetPluginInformation(arclite_plg_handle)
if pinfo then
local obj = far.CreateSettings(arclite_plugin_uuid, F.PSL_ROAMING)
local result = obj:Get(0, setting_name, F.FST_QWORD)
obj:Free()
if result ~= 0 then --[x] Handle archive creation (Shift-F1)
Plugin.Config(arclite_plugin_guid)
Keys("Space") --выключаем Handle archive creation
Keys("Enter")
end
end
Keys("ShiftF1")
end;
}
День добрый.
Взялся перебирать старые фидошные архивы с 90-х. Одна беда, сжимал тогда их архиватором HA.
Multiarc архивы понимает, но открывать не желает, дескать нет исполняемого модуля "ha". Это как то лечится?