Страница 10 из 12

Добавлено: Вт мар 05, 2019 14:09
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.

Добавлено: Вт мар 05, 2019 15:13
Avada
Flasher
Да, у меня два скрипта: твой для перезапуска и упомянутый выше для смены битности. Впрочем, по мере появления, как видишь, рассматриваю и другие варианты. А твой свежий вариант скрипта перезапускает TC, но битность не меняет.

Добавлено: Вт мар 05, 2019 15:16
Flasher
Avada
Ну, да, не меняет. А профит в чём? Для тестов?

Добавлено: Вт мар 05, 2019 15:20
Avada
Flasher
Не понял. Ты предлагаешь скрипт на замену последнему из двух, который для смены битности? Ну так мне нужно её менять. Без всяких тестов, для повседневной работы.

Добавлено: Вт мар 05, 2019 15:46
Flasher
Avada
Ты вроде всюду пишешь, что используешь 32-битный Тотал на x64 системе. Ну, ОК, исправил.

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

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

Посмотрел. Не происходит обратное переключение с x64 на x32.

Добавлено: Вт мар 05, 2019 19:16
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 будет стандартный перезапуск.

Добавлено: Вт мар 05, 2019 19:38
Avada
Flasher
Чистый реверс, конечно. У меня обе битности могут быть рабочими. Сейчас идёт нормальная перезагрузка с x32 на x64, а если наоборот, x64 закрывается, а x32 не открывается. Проверь.

Добавлено: Вт мар 05, 2019 19:46
Flasher
Avada
Не вижу причин для этого. У тебя в точности такой вариант, как сейчас?

Добавлено: Вт мар 05, 2019 20:09
sergiokapone
Нли компилировать батник с Quick batch compiler со скрытием консольного окна, то лезут непонятные косяки с перезапуском, если разрешить запуск консольного окна, то отрабатывает так же, как и батник. Может, конечно у кого-то есть годное решение, как можно скрывать консольное окно.

Добавлено: Ср мар 06, 2019 05:50
Avada
Flasher
В точности такой же. И с правильным параметром в правильном поле кнопки. Перепроверял только что.

Добавлено: Ср мар 06, 2019 06:05
Flasher
Avada
При этом в папке ТС присутствуют TOTALCMD.exe и TOTALCMD64.exe?

Добавлено: Ср мар 06, 2019 06:25
Avada
Flasher
Конечно, присутствуют.
Я попозже ещё место расположения скрипта попробую поменять.

Добавлено: Ср мар 06, 2019 06:30
Flasher
Avada
Место расположения скрипта вообще никак не влияет.
Вставь последней строкой:

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

MsgBox(0, '', StringLeft($CmdLine[1], StringLen($CmdLine[1]) - 6) & $PFix & '.exe')
Что покажет?
4, 5, 9 строки можно временно закомментировать.
И в wincmd.ini у тебя Onlyonce=0 ?

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

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

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

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

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

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

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