Рестарт/перезапуск TC
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2, 3, 4, 5, 6 ... 10, 11, 12  Next  :| |:
Total Commander -> Автоматизация Total Commander

#61:  Author: goraLocation: Иваново PostPosted: Thu Mar 07, 2013 10:54
    —
KopBuH
Ваш вариант не закрывает ТС, а убивает его процесс. При этом после запуска не сохраняться открытые перед "смертью" директории на панелях при повторном запуске, в отличии от закрытия ТС через посыл Alt+F4.

#62:  Author: LonerDLocation: Донецк PostPosted: Thu Mar 07, 2013 14:49
    —
Quote:
в отличии от закрытия ТС через посыл Alt+F4.

Поправка - через cm_Exit (ибо Alt+F4 не при всяких настройках закрывает ТС).

Quote:
не сохраняться открытые перед "смертью" директории

У меня сохраняет.

Quote:
KopBuH
Ваш вариант не закрывает ТС, а убивает его процесс.

Самое плохое - этот вариант не закрывает и не убивает процесс 32-х битного ТС под 64-битной Windows.
Непонятный нюанс. В предложенном варианте процесс не убивается (не найден PID) и новая копия Тотала не запускается. А вот если добавить вначале перед comspec скрытие консольных окон hidcon - запускается новая версия Тотала, но старая не убивается. Почему? Ещё не сталкивался чтобы скрыватель консоли так влиял на консольную команду.
И почему PID не находится? Taskill ведь может убивать 32-х битные процессы.


Last edited by LonerD on Thu Mar 07, 2013 16:29; edited 1 time in total

#63:  Author: AvadaLocation: Россия, Саратов PostPosted: Thu Mar 07, 2013 15:06
    —
gora
LonerD
Думаю, и до этого, и сейчас сказано уже достаточно, чтобы этот вариант в качестве рекомендуемого больше не рассматривать.

#64:  Author: LonerDLocation: Донецк PostPosted: Thu Mar 07, 2013 16:31
    —
Avada
А мне наоборот - вариан реализации кажется весьма интересным, но пока не полностью работоспособным.

Flasher
Если ещё актуально по скрипту.
Погонял под Win8x64, Тотал 32-х и 64-х битный, с последним TwinKey (курсор в неактивной панели в TwinKey отключен, в Тотале - включен).
Положение курсора сохраняется только на файлах, но не на каталогах. Внутри архивов положение курсора не сохраняется.
Если файлов в панели много и курсор находится не на первых файлах - то после перезапуска положение его сохраняется, но на экране он не виден, нужно крутнуть чуток вниз список файлов.

Если добавить в авторан активацию Virtual Panel
Code:
# Activate Virtual Panel Plugin
CommandExec /CD "\\\Virtual Panel"
Sleep 50
SendCommand cm_GotoPreviousDir

то при при положении курсора на правой панели после запуска открывается совсем не то, что ожидалось; при положении курсора на левой панели - положение курсора сохраняется через раз.

В целом даже без этих строк после нескольких десятков перезапусков было

#65:  Author: FlasherLocation: Москва PostPosted: Thu Mar 07, 2013 16:48
    —
LonerD wrote:
Если ещё актуально по скрипту.
А где я отменял актуальность? Smile Это Avada написал, что погоняет на других машинах, но так, по всей видимости, и не погонял..

LonerD wrote:
Положение курсора сохраняется только на файлах, но не на каталогах.
Единственное, что можно делать, чтобы оставлять курсор на папках, это входить и выходить из них (причём менять фокус, если папки в обеих панелях). Сомневаюсь, что тебе такое понравится, да и остальным тоже.

LonerD wrote:
Внутри архивов положение курсора не сохраняется.
Знаю, не предусмотрено ТС. Только фокус активности сохраняется (это тоже в какой-то мере положение).

LonerD wrote:
но на экране он не виден, нужно крутнуть чуток вниз список файлов.
Крутить ничего не надо, достаточно воспользоваться одинарным нажатием вверх/вниз.

LonerD wrote:
Если добавить в авторан активацию...
на левой панели - положение курсора сохраняется через раз
Ещё бы. Кто последний, тот и водит. Либо скрипт, либо Autorun.
Как вариант - ставить решётку в autorun.cfg перед указанной командой. Но это уже для твоего частного случая.

#66:  Author: AvadaLocation: Россия, Саратов PostPosted: Thu Mar 07, 2013 18:08
    —
Flasher wrote:
Это Avada написал, что погоняет на других машинах, но так, по всей видимости, и не погонял..

Подробный анализ требует времени, которого у меня пока в достаточном количестве нет. Кое-что, впрочем, сообщить могу.
Упоминавшаяся уже утилита ReloadTC, да, не работает в 64-битном TC, но зато обладает одним весьма ценным качеством, которого я у конкурентов не наблюдаю. Поясню на примере.
Допустим, у нас есть TC, который в норме запускается без всяких специальных параметров, с подхватыванием INI-файла, лежащего в папке TC. Допустим также, что предусмотрен вызов (в том числе через ярлык) того же самого TC с минимальными настройками, близкими у умолчальным. Для такого тестового запуска значениями параметров /I и /F указаны другие INI-файлы.
Итак, ярлыком запускается (с параметрами) тестовая версия TC. Создадим там кнопку для перезапуска. Если в ней используется ReloadTC, он именно этот самый TC с этими самыми параметрами опять и перезапустит. Если используются средства, где указана переменная %Commander_EXE%, после закрытия окна тестового TC запущен будет другой, полнофункциональный вариант той же копии TC (тот же экзешник, но без параметров и, следовательно, с другими INI-файлами). И скрипт, и Tinny TC Restarter работают именно так.
Интересно, можно ли тут совместить обе полезности?
На форуме проблема анализа командной строки поднималась, к примеру, здесь, но это было очень давно. Что с тех пор изменилось? Что можно сделать сейчас при запуске утилиты/скрипта из текущей копии TC? Для основного файла настроек есть переменная %COMMANDER_INI%. Для настроек FTP аналога нет, но этим в первом приближении пока что можно пренебречь.

#67:  Author: FlasherLocation: Москва PostPosted: Thu Mar 07, 2013 18:36
    —
Avada wrote:
ReloadTC, он именно этот самый TC с этими самыми параметрами опять и перезапустит.
"Этот самый" он запустить никак не может, он аналогично создаёт новый процесс, ибо старый уже был захлопнут.
Avada wrote:
%Commander_EXE%, после закрытия окна тестового TC запущен будет другой, полнофункциональный вариант той же копии TC (тот же экзешник, но без параметров и, следовательно, с другими INI-файлами). И скрипт, и Tinny TC Restarter работают именно так.
В моём случае не без параметров, а с параметрами, но не теми, с какими был запущен Тотал через ярлык.
Avada wrote:
можно ли тут совместить обе полезности?
Совмещение противоречит сути возврата, т.к. ТС запускается с определёнными параметрами /L= /R= /P=L/R, которые также могут фигурировать в активном ТС.
Если речь идёт только об /I и /F, то, в принципе, их вытащить и подставить в комстроку можно, только в данном случае PID из Auotorun точно потребуется.

#68:  Author: AvadaLocation: Россия, Саратов PostPosted: Thu Mar 07, 2013 18:41
    —
Flasher wrote:
Если речь идёт только об /I и /F, то, в принципе, из вытащить и подставить в комстроку можно, только в данном случае PID из Auotorun точно потребуется.

Да, речь идёт только об этом.

#69:  Author: LonerDLocation: Донецк PostPosted: Thu Mar 07, 2013 23:45
    —
Flasher
Quote:
А где я отменял актуальность?

Нигде.

Quote:
Сомневаюсь, что тебе такое понравится, да и остальным тоже.

Тоже сомневаюсь. Тогда для себя не вижу смысла в использовании скрипта. Crying or Very sad Желаемый результат с ним получается не всегда - не будешь же каждый раз следить где находится курсор (на файле или на каталоге) при перезапуске.

#70:  Author: FlasherLocation: Москва PostPosted: Fri Mar 08, 2013 01:15
    —
Avada
Ясно. Сделать - сделаю, но вот только не знаю, как быть - править старый пост или запостить MIME?

LonerD
Весьма странная попытка увидеть смысл использования только там, где всё без исключения работает. Может, и от ТС откажешься? Wink
Любой иной перезапуск тебе такого возврата не сделает. Утеривать текущие позиции (в архивах, в системных плагинах, в виртуальных папках, в заблокированных вкладках) лично мне никакого удовольствия после перезапуска, которым я частенько пользуюсь, не доставляет. Если тебе доставляет, не вопрос, юзай простейшие варианты (уже давно мне неинтересные). Суть скрипта прежде всего в запоминании открытых псевдо/папок, мысль о позиции курсора на файлах возникла сравнительно недавно.

#71:  Author: LonerDLocation: Донецк PostPosted: Fri Mar 08, 2013 03:46
    —
Flasher
Quote:
Может, и от ТС откажешься?

Нет.

Quote:
перезапуска, которым я частенько пользуюсь

У меня Тотал иногда сутки и более не закрывается и не перезапускается.

Quote:
Суть скрипта прежде всего в запоминании открытых псевдо/папок, мысль о позиции курсора на файлах возникла сравнительно недавно.

Мне до твоего скрипта ни одна ни вторая мысль даже не приходили, потому пока не осознал все удобства этого метода. Smile

Quote:
Единственное, что можно делать, чтобы оставлять курсор на папках, это входить и выходить из них (причём менять фокус, если папки в обеих панелях). Сомневаюсь, что тебе такое понравится, да и остальным тоже....
Тоже сомневаюсь.

PS. Уже не так сомневаюсь.
Я ведь твоим скриптом перехода к закладкам (в том числе если закладка стоит на папке) пользуюсь - нравится Laughing

#72:  Author: AvadaLocation: Россия, Саратов PostPosted: Fri Mar 08, 2013 10:04
    —
Flasher wrote:
Ясно. Сделать - сделаю, но вот только не знаю, как быть - править старый пост или запостить MIME?

Мне, честно говоря, без особой разницы. Ну, пускай MIME будет.

#73:  Author: FlasherLocation: Москва PostPosted: Fri Mar 08, 2013 18:11
    —
LonerD wrote:
Мне до твоего скрипта ни одна ни вторая мысль даже не приходили, потому пока не осознал все удобства этого метода.
Наверно, частично заблокированными вкладками вообще не пользуешься и в архивы почти не заходишь. Если бы пользовался, сразу понял бы всю соль, ибо перезапускать при перенастройках ТС (автозагрузки, плагинов) просто необходимо. Перезапуски также требуются при перезаполнении памяти, багах и висах.
LonerD wrote:
Я ведь твоим скриптом перехода к закладкам (в том числе если закладка стоит на папке) пользуюсь - нравится
Я не думаю, что поведение будет аналогичное, как и при активном окне ТС. Не пробовал ещё блокировать окно только при его появлении. Могут быть артефакты, и некоторая задержка добавится. Ладно, посмотрю, как можно грамотней реализовать. Если получится криво, то выкладывать не буду.

Avada
Собственно, обойдусь без Autorun-a, так что можно и обновить.
Такой вопрос. На данный момент мы задаём ini в отдельной переменной. А что если в ini-файле, задаваемым через ключ, нет редиректа, или он ведёт на другой ini-файл с историей?
И как ведёт себя ReloadTC, если писать к файлам конфигурации не путь целиком, а только имя файла?
P.S. И не пора бы уже тему, прямо касаемую автоматизации, перенести в нужный подфорум?

#74:  Author: AvadaLocation: Россия, Саратов PostPosted: Fri Mar 08, 2013 20:15
    —
Flasher wrote:
На данный момент мы задаём ini в отдельной переменной. А что если в ini-файле, задаваемым через ключ, нет редиректа, или он ведёт на другой ini-файл с историей?

В моём случае — именно что нет. Да, такие варианты надо учесть.

Flasher wrote:
И как ведёт себя ReloadTC, если писать к файлам конфигурации не путь целиком, а только имя файла?

Я, конечно, могу проверить специально, но у меня в параметрах TC указывается не только другое имя, но и другой путь (вообще на другом диске).
Кстати, у ReloadTC могут быть собственные параметры, в том числе и для INI-файлов. Если они используются (у меня — нет), то подменяют стандартные (это есть в документации утилиты).

Flasher wrote:
И не пора бы уже тему, прямо касаемую автоматизации, перенести в нужный подфорум?

Безусловно, пора, и я это делаю. Общая тема по перезапуску TC необходима, но её действительно логично и правильно держать в "Автоматизации".

#75:  Author: Strek PostPosted: Tue Mar 12, 2013 18:45
    —
У меня exe-шка на AutoIt, с таким кодом:
Code:

Global $title

if processexists("TOTALCMD64.EXE") then
    $title = _Process2Win("TOTALCMD64.EXE")
    WinClose($title)
    Run("Путь к папке\TOTALCMD.exe")
elseIf processexists("TOTALCMD.EXE") then
    $title = _Process2Win("TOTALCMD.EXE")
    WinClose($title)
    Run("Путь к папке\TOTALCMD64.exe /i="Путь к папке\WinCmd64.ini")
endif

func _Process2Win($pid)
    if isstring($pid) then $pid = processexists($pid)
    if $pid = 0 then return -1
    $list = WinList()
    for $i = 1 to $list[0][0]
        if $list[$i][0] <> "" AND BitAnd(WinGetState($list[$i][1]),2) then
            $wpid = WinGetProcess($list[$i][0])
            if $wpid = $pid then return $list[$i][0]
        EndIf
    next
    return -1
endfunc


Источник AutoIt-Script.Ru



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page Previous  1, 2, 3, 4, 5, 6 ... 10, 11, 12  Next  :| |:
Page 5 of 12

Powered by phpBB © 2001, 2005 phpBB Group