Page 1 of 1

Макрос распаковывает файл в %TEMP% и открывает его

Posted: Wed 14 Dec, 2016 17:10
by Zmey78
Макрос распаковывает файл по Shift+ENTER в %TEMP% и открывает его средствами Windows. Работает на всех панелях плагинов.

Пришлось написать, потому что в FAR не работает стандартный встроенный в Windows просмотр изображений по ENTER из архивов (например, ZIP). Пишет "Средству просмотра фотографий Windows не удалось открыть это изображение". Удалось выяснить, что в папке %TEMP% создается копия файла с изображением, но сразу же удаляется, поэтому просмотр ее не подхватывает.
  1. local F = far.Flags
  2.  
  3.  
  4.  
  5. Macro {
  6.  
  7.   description="Open from the temporary directory";
  8.  
  9.   area="Shell"; key="ShiftEnter";
  10.  
  11.   condition=function()
  12.  
  13.     local info,item = panel.GetPanelInfo(nil,1),panel.GetCurrentPanelItem(nil,1)
  14.  
  15.     return info.PanelType==F.PTYPE_FILEPANEL and bit64.band(info.Flags,F.PFLAGS_PLUGIN)==F.PFLAGS_PLUGIN and not item.FileAttributes:find("d")
  16.  
  17.   end;
  18.  
  19.   action=function()
  20.  
  21.     Keys('F5 Del % T E M P % AltT Enter')
  22.  
  23.     win.ShellExecute(nil,nil,win.GetEnv("TEMP").."\\"..panel.GetCurrentPanelItem(nil,1).FileName)
  24.  
  25.   end;
  26.  
  27. }
Файл положить сюда: "C:\Users\<ИМЯ ПОЛЬЗОВАТЕЛЯ>\AppData\Roaming\Far Manager\Profile\Macros\scripts\"
Panel.OpenFromTEMP.lua
(550 Bytes) Downloaded 270 times

Макрос распаковывает файл в %TEMP% и открывает его

Posted: Wed 14 Dec, 2016 18:27
by HaRT
Тему я перенёс. Прежде чем её там создавать, следовало прочитать правила того раздела в закреплённой теме. :evil:

Макрос распаковывает файл в %TEMP% и открывает его

Posted: Wed 14 Dec, 2016 19:33
by Smitis
Zmey78
Можно проверять, что панель принадлежит плагину ArcLite. Посмотрите, как у меня сделано здесь http://forum.farmanager.com/viewtopic.p ... 58#p141858

Макрос распаковывает файл в %TEMP% и открывает его

Posted: Wed 14 Dec, 2016 20:51
by HaRT
Smitis wrote: Посмотрите, как у меня сделано здесь
При чём тут оно?:
Smitis wrote: для быстрого переключения ArcLite <> MultiArc находясь внутри архива, можно воспользоваться макросом
Задача-то решается совсем другая.

Макрос распаковывает файл в %TEMP% и открывает его

Posted: Thu 15 Dec, 2016 08:37
by Smitis
HaRT wrote:Задача-то решается совсем другая.
:?:
Ясень пень, задача другая. Но у нас открыта панель плагина. Мало ли какой это плагин? Может с этой панели вообще не поддерживается копирование. Поэтому и предлагаю сделать проверку, что это плагин ArcLite. Можно и остальные, MultiArc, Observer, может ещё какие, не архивные. И на всякий случай можно сделать проверку, что нужный диалог открылся. И что после копирования ошибка не произошла (файл такой во временной папке уже есть и он залочен).

П.С.
Можно историю отключить, чтобы не засорялась Far.DisableHistory(-1)