Одна копия Far

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

Одна копия Far

Post by maximav » Tue 13 Oct, 2015 15:32

Far2 1807 x64. Возможно ли из Windows активировать или загружать только одну копию Far-консоли? Если запущена, делать активной, если нет, то запускать. PID не предлагать. Заголовок окна тоже.

ObSerV
Posts: 53
Joined: Wed 29 Jul, 2009 06:26
Been thanked: 1 time

Одна копия Far

Post by ObSerV » Tue 13 Oct, 2015 16:25

ставишь на иконку фара шорткат ctrl-alt-f к примеру и пользуешь только его...

maximav
Posts: 62
Joined: Sat 23 Mar, 2013 14:06

Одна копия Far

Post by maximav » Wed 14 Oct, 2015 05:05

??? Мне надо Far из другой проги запускать/активировать

ObSerV
Posts: 53
Joined: Wed 29 Jul, 2009 06:26
Been thanked: 1 time

Одна копия Far

Post by ObSerV » Wed 14 Oct, 2015 06:06

Ну надо-же, а в первом сообщении этого не видно...

maximav
Posts: 62
Joined: Sat 23 Mar, 2013 14:06

Одна копия Far

Post by maximav » Wed 14 Oct, 2015 19:36

Рыскал везде. Кажется ответ отрицательный. Даже чисто по Windows интерфейсу не найти, как активировать уже запущенную прогу-окно. Кстати, я надеюсь, в Far3 эта "мелочь" сделана...?

User avatar
HaRT
Moderator
Posts: 8637
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 78 times
Been thanked: 142 times

Одна копия Far

Post by HaRT » Wed 14 Oct, 2015 19:56

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

maximav
Posts: 62
Joined: Sat 23 Mar, 2013 14:06

Одна копия Far

Post by maximav » Thu 15 Oct, 2015 08:28

Вы знаете, у меня сегодня родилась мысль через использование 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: 3750
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 4 times
Been thanked: 148 times

Одна копия Far

Post by 2useven10 » Thu 15 Oct, 2015 10:33

В фар3 всё можно сделать в стартапном макросе на lua/FFI.

maximav
Posts: 62
Joined: Sat 23 Mar, 2013 14:06

Одна копия Far

Post by maximav » Thu 15 Oct, 2015 13:44

2useven10 wrote: В фар3 всё можно сделать...
Вы хотите сказать, что в Far3 можно сделать так, чтобы он сам запускался только в одной копии? Не ясно, вопрос ведь в вызове Far из вне....

2useven10
Posts: 3750
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 4 times
Been thanked: 148 times

Одна копия Far

Post by 2useven10 » Thu 15 Oct, 2015 14:27

Если в запускаемом экземпляре фар будет авторстартующий макрос, который найдёт уже запущенный фар и активирует его, а сам завершит работу своей копии, то неважно как его стартовали. Побочным эффектом будет невозможность запустить 2 таких фара.
Но можно будет держать 2 копии - одна с макросом, другая 'нормальная'.

siberia-man
Posts: 89
Joined: Sat 28 Jun, 2014 23:07
Has thanked: 1 time
Been thanked: 3 times

Одна копия Far

Post by siberia-man » Fri 16 Oct, 2015 09:02

вариант 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 » Fri 16 Oct, 2015 09:40

Это все - запускать сам Far. А я про активирование из вне того, что уже есть. Или запускать новый.

siberia-man
Posts: 89
Joined: Sat 28 Jun, 2014 23:07
Has thanked: 1 time
Been thanked: 3 times

Одна копия Far

Post by siberia-man » Fri 16 Oct, 2015 11:50

Вместо 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 » Fri 16 Oct, 2015 13:43

да, я прочитал где-то про AppActivate, что она не отлавливает консоли... увы. Странно, почему это даже в far'е 3 не реализовано.

User avatar
HaRT
Moderator
Posts: 8637
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 78 times
Been thanked: 142 times

Одна копия Far

Post by HaRT » Fri 16 Oct, 2015 14:00

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

2useven10
Posts: 3750
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 4 times
Been thanked: 148 times

Одна копия Far

Post by 2useven10 » Fri 16 Oct, 2015 22:14

maximav wrote:Это все - запускать сам Far. А я про активирование из вне того, что уже есть. Или запускать новый.
maximav wrote:Странно, почему это даже в far'е 3 не реализовано.
Вы уж определитесь на что жалуетесь.

Post Reply

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