Одна копия Far

Столкнулись с проблемой в использовании Far? Здесь можно получить помощь.
maximav
Posts: 62
Joined: Sat 23 Mar, 2013 14:06

Одна копия Far

Post by maximav »

Far2 1807 x64. Возможно ли из Windows активировать или загружать только одну копию Far-консоли? Если запущена, делать активной, если нет, то запускать. PID не предлагать. Заголовок окна тоже.
ObSerV
Posts: 53
Joined: Wed 29 Jul, 2009 06:26
Been thanked: 1 time

Одна копия Far

Post by ObSerV »

ставишь на иконку фара шорткат ctrl-alt-f к примеру и пользуешь только его...
maximav
Posts: 62
Joined: Sat 23 Mar, 2013 14:06

Одна копия Far

Post by maximav »

??? Мне надо Far из другой проги запускать/активировать
ObSerV
Posts: 53
Joined: Wed 29 Jul, 2009 06:26
Been thanked: 1 time

Одна копия Far

Post by ObSerV »

Ну надо-же, а в первом сообщении этого не видно...
maximav
Posts: 62
Joined: Sat 23 Mar, 2013 14:06

Одна копия Far

Post by maximav »

Рыскал везде. Кажется ответ отрицательный. Даже чисто по Windows интерфейсу не найти, как активировать уже запущенную прогу-окно. Кстати, я надеюсь, в Far3 эта "мелочь" сделана...?
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Одна копия Far

Post by HaRT »

maximav wrote: как активировать уже запущенную прогу-окно
Виндовую прогу несложно написать так, чтобы она находила свой уже запущенный экземпляр и передавала управление ему, а новый завершала. Соответственно, возможно написать плагин, который при своей загрузке будет проделывать аналогичные действия с экземплярами Фара. Насколько я знаю, в самом Фаре 3 ничего подобного нет.
Фар есть инструмент, а не нянька. © 2009 DrKnS
maximav
Posts: 62
Joined: Sat 23 Mar, 2013 14:06

Одна копия Far

Post by maximav »

Вы знаете, у меня сегодня родилась мысль через использование vbs-скрипта и функции AppActivate(String | ProcessID). Делаем так. Создаем startup макрос, который запускает plist, лезет в Far.exe через F3 и берет оттуда Far'овский PID.Пусть он еще пишет это число в vbs-файл с уже организованной там командой AppActivate. Макрос, конечно, пусть делает это только один - первый - раз. Все, далее используем получившийся/обновленный vbs, где надо. Я еще не реализовал эту штуку, но, кажется, идея полезная. Я/мы типично сидим в своем редакторе и хотим переключаться в Far там...кнопкой или клавишей. Если кто реализует мысль выше без меня, буду признателен. Я еще не изучал работу AppActivate (см. Google).
Last edited by maximav on Thu 15 Oct, 2015 15:58, edited 2 times in total.
2useven10
Posts: 5208
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Одна копия Far

Post by 2useven10 »

В фар3 всё можно сделать в стартапном макросе на lua/FFI.
maximav
Posts: 62
Joined: Sat 23 Mar, 2013 14:06

Одна копия Far

Post by maximav »

2useven10 wrote: В фар3 всё можно сделать...
Вы хотите сказать, что в Far3 можно сделать так, чтобы он сам запускался только в одной копии? Не ясно, вопрос ведь в вызове Far из вне....
2useven10
Posts: 5208
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Одна копия Far

Post by 2useven10 »

Если в запускаемом экземпляре фар будет авторстартующий макрос, который найдёт уже запущенный фар и активирует его, а сам завершит работу своей копии, то неважно как его стартовали. Побочным эффектом будет невозможность запустить 2 таких фара.
Но можно будет держать 2 копии - одна с макросом, другая 'нормальная'.
siberia-man
Posts: 131
Joined: Sat 28 Jun, 2014 23:07
Has thanked: 2 times
Been thanked: 9 times

Одна копия Far

Post by siberia-man »

вариант 1.
запускать из батника в котором проверять наличие процесаа Far.exe

Code: Select all

tasklist /fi "imagename eq Far.exe" | findstr "Far.exe" >nul && (
	echo:Far has already launched>&2
	exit /b 1
)
Far.exe %*
вариант 2.
проверять из самого Far наличие второй копии процесса (например с помошью lua) и выходить если их их два и больше.

Первый проще и гибче.
maximav
Posts: 62
Joined: Sat 23 Mar, 2013 14:06

Одна копия Far

Post by maximav »

Это все - запускать сам Far. А я про активирование из вне того, что уже есть. Или запускать новый.
siberia-man
Posts: 131
Joined: Sat 28 Jun, 2014 23:07
Has thanked: 2 times
Been thanked: 9 times

Одна копия Far

Post by siberia-man »

Вместо exit /b1 сделайте вызов скрипта:

Code: Select all

Option Explicit

Dim Shell, WMI, wql, process

Set Shell = CreateObject("WScript.Shell")

Set WMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

wql = "SELECT ProcessId FROM Win32_Process WHERE Name = 'ConEmu.exe'"

For Each process In WMI.ExecQuery(wql)
	Shell.AppActivate process.ProcessId
	WScript.Quit
Next
Но работает только если Far запущен из-под ConEmu. "Голый" Far таким способом не активизируется.
maximav
Posts: 62
Joined: Sat 23 Mar, 2013 14:06

Одна копия Far

Post by maximav »

да, я прочитал где-то про AppActivate, что она не отлавливает консоли... увы. Странно, почему это даже в far'е 3 не реализовано.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Одна копия Far

Post by HaRT »

maximav wrote: я про активирование из вне того, что уже есть
В батнике можно как-то так: [url=http://www.commandline.co.uk/cmdow/]cmdow[/url].exe "* - Far 3.*" /ACT /RES
Фар есть инструмент, а не нянька. © 2009 DrKnS
Post Reply

Return to “Нужна помощь”