Рестарт/перезапуск TC

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Avada писал(а):У меня этот способ сохраняется как резервный, постоянно я давно уже пользуюсь скриптом.
Avada писал(а):Я использую экзешник на основе этого скрипта из текущей темы с последующими модификациями (раз, два).
Ты двумя скриптами пользуешься что-ли? В части последнего, по-моему, всё проще:

Код: Выделить всё

; Параметр в поле Команда: "%COMMANDER_EXE%"
$hWnd = WinActive("[CLASS:TTOTAL_CMD]")
If $hWnd Then
  WinClose($hWnd)
  ProcessWaitClose(WinGetProcess($hWnd))
  If @OSArch = 'x86' Or (StringRight($CmdLine[1], 6) = '64.exe') Then
    Run($CmdLine[1])
  Else
    Run(StringLeft($CmdLine[1], StringLen($CmdLine[1])-4) & '64.exe')
  EndIf
EndIf
Первый, морально устарел, конечно. Давно его не юзаю. Пошёл в итоге по пути команд TCFS2.
Последний раз редактировалось Flasher Вт мар 05, 2019 16:00, всего редактировалось 3 раза.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Flasher
Да, у меня два скрипта: твой для перезапуска и упомянутый выше для смены битности. Впрочем, по мере появления, как видишь, рассматриваю и другие варианты. А твой свежий вариант скрипта перезапускает TC, но битность не меняет.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Avada
Ну, да, не меняет. А профит в чём? Для тестов?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Flasher
Не понял. Ты предлагаешь скрипт на замену последнему из двух, который для смены битности? Ну так мне нужно её менять. Без всяких тестов, для повседневной работы.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Avada
Ты вроде всюду пишешь, что используешь 32-битный Тотал на x64 системе. Ну, ОК, исправил.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Flasher
Если быть совсем точным, я использую комбинированный TC на разных системах. В x64 — преимущественно 32-битный (пока).
Скрипт гляну попозже, сейчас занят другими делами.

Добавлено спустя 1 час 25 минут:

Посмотрел. Не происходит обратное переключение с x64 на x32.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Avada
А, тебе чистый реверс нужен. Думал, что всегда в 64. Тогда так:

Код: Выделить всё

;:::::::::::::::::::: AU3 ::::::::::::::::::::
; Перезапуск ТС со сменой архитектуры x32<>x64
; Параметр в поле Команда: "%COMMANDER_EXE%"
;:::::::::::::::::::::::::::::::::::::::::::::
#NoTrayIcon
Local $hWnd = WinActive("[CLASS:TTOTAL_CMD]")
If $hWnd Then
  Opt("WinWaitDelay", 40)
  Local $TC = $CmdLine[1], $PFix = '', $n = 4
  WinClose($hWnd)
  ProcessWaitClose(WinGetProcess($hWnd))
  If @OSArch <> 'x86' Then
    If StringRight($TC, 6) = '64.EXE' Then
      $n = 6
    Else
      $PFix = '64'
    EndIf
  EndIf
  $PID = Run(StringLeft($TC, StringLen($TC) - $n) & $PFix & '.EXE')
  WinWaitActive("[CLASS:TTOTAL_CMD]")
  $WSS = ObjCreate('WScript.Shell')
  $WSS.AppActivate($PID)
EndIf
На Win x32 будет стандартный перезапуск.
Последний раз редактировалось Flasher Чт мар 07, 2019 20:04, всего редактировалось 7 раз.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Flasher
Чистый реверс, конечно. У меня обе битности могут быть рабочими. Сейчас идёт нормальная перезагрузка с x32 на x64, а если наоборот, x64 закрывается, а x32 не открывается. Проверь.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Avada
Не вижу причин для этого. У тебя в точности такой вариант, как сейчас?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
sergiokapone
Сообщения: 99
Зарегистрирован: Ср ноя 18, 2009 17:53

Сообщение sergiokapone »

Нли компилировать батник с Quick batch compiler со скрытием консольного окна, то лезут непонятные косяки с перезапуском, если разрешить запуск консольного окна, то отрабатывает так же, как и батник. Может, конечно у кого-то есть годное решение, как можно скрывать консольное окно.
Последний раз редактировалось sergiokapone Ср мар 06, 2019 11:32, всего редактировалось 1 раз.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Flasher
В точности такой же. И с правильным параметром в правильном поле кнопки. Перепроверял только что.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Avada
При этом в папке ТС присутствуют TOTALCMD.exe и TOTALCMD64.exe?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Flasher
Конечно, присутствуют.
Я попозже ещё место расположения скрипта попробую поменять.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Avada
Место расположения скрипта вообще никак не влияет.
Вставь последней строкой:

Код: Выделить всё

MsgBox(0, '', StringLeft($CmdLine[1], StringLen($CmdLine[1]) - 6) & $PFix & '.exe')
Что покажет?
4, 5, 9 строки можно временно закомментировать.
И в wincmd.ini у тебя Onlyonce=0 ?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Flasher
Тестировать буду вечером дома: на работе с запуском этих скриптов в любой их модификации почему-то возникли проблемы, на уяснение и устранение которых пока нет времени. И, да, у меня Onlyonce=0.

Добавлено спустя 9 минут:

Удалось запустить тестовый вариант с дополнительной строкой.
При вызове x64 из x32 выводится окно с правильным путём:

Код: Выделить всё

-------------- ------------
0
---------------------------
C:\Totalcmd\TOTALCMD64.exe
---------------------------
ОК   
---------------------------
При обратном вызове имеем следующее:

Код: Выделить всё

---------------------------
0
---------------------------
C:\Totalcmd\TOTALCMDMD.exe
---------------------------
ОК   
---------------------------
Видно, что имя неправильное.
Надо продолжать с закомментированными строками?
Даже самая богатая фантазия
Не представит себе наши безобразия.
Ответить