Одна копия Far
Одна копия Far
Far2 1807 x64. Возможно ли из Windows активировать или загружать только одну копию Far-консоли? Если запущена, делать активной, если нет, то запускать. PID не предлагать. Заголовок окна тоже.
Одна копия Far
Рыскал везде. Кажется ответ отрицательный. Даже чисто по Windows интерфейсу не найти, как активировать уже запущенную прогу-окно. Кстати, я надеюсь, в Far3 эта "мелочь" сделана...?
- HaRT
- Moderator
- Posts: 10863
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Одна копия Far
Виндовую прогу несложно написать так, чтобы она находила свой уже запущенный экземпляр и передавала управление ему, а новый завершала. Соответственно, возможно написать плагин, который при своей загрузке будет проделывать аналогичные действия с экземплярами Фара. Насколько я знаю, в самом Фаре 3 ничего подобного нет.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Одна копия Far
Вы знаете, у меня сегодня родилась мысль через использование 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.
Одна копия Far
Вы хотите сказать, что в Far3 можно сделать так, чтобы он сам запускался только в одной копии? Не ясно, вопрос ведь в вызове Far из вне....
Одна копия Far
Если в запускаемом экземпляре фар будет авторстартующий макрос, который найдёт уже запущенный фар и активирует его, а сам завершит работу своей копии, то неважно как его стартовали. Побочным эффектом будет невозможность запустить 2 таких фара.
Но можно будет держать 2 копии - одна с макросом, другая 'нормальная'.
Но можно будет держать 2 копии - одна с макросом, другая 'нормальная'.
-
- Posts: 131
- Joined: Sat 28 Jun, 2014 23:07
- Has thanked: 2 times
- Been thanked: 9 times
Одна копия Far
вариант 1.
запускать из батника в котором проверять наличие процесаа Far.exe
вариант 2.
проверять из самого Far наличие второй копии процесса (например с помошью lua) и выходить если их их два и больше.
Первый проще и гибче.
запускать из батника в котором проверять наличие процесаа 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 %*
проверять из самого Far наличие второй копии процесса (например с помошью lua) и выходить если их их два и больше.
Первый проще и гибче.
Одна копия Far
Это все - запускать сам Far. А я про активирование из вне того, что уже есть. Или запускать новый.
-
- Posts: 131
- Joined: Sat 28 Jun, 2014 23:07
- Has thanked: 2 times
- Been thanked: 9 times
Одна копия Far
Вместо exit /b1 сделайте вызов скрипта:
Но работает только если Far запущен из-под ConEmu. "Голый" Far таким способом не активизируется.
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
да, я прочитал где-то про AppActivate, что она не отлавливает консоли... увы. Странно, почему это даже в far'е 3 не реализовано.
- HaRT
- Moderator
- Posts: 10863
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Одна копия Far
В батнике можно как-то так:
[url=http://www.commandline.co.uk/cmdow/]cmdow[/url].exe "* - Far 3.*" /ACT /RES
Фар есть инструмент, а не нянька. © 2009 DrKnS