Страница 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
---------------------------
ОК
---------------------------
Видно, что имя неправильное.
Надо продолжать с закомментированными строками?