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

#76:  Author: mrmerak PostPosted: Fri Oct 18, 2013 15:05
    —
Народ, а кто может мой простенький vbs-скрипт переделать, чтобы он был универсальный для х32 и х64

Code:
Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys("%{F4}")
WScript.Sleep 400
WshShell.Run "TOTALCMD.EXE"

#77:  Author: Skif_off PostPosted: Fri Oct 18, 2013 19:24
    —
Strek wrote:
У меня exe-шка на AutoIt, с таким кодом:

В выложенном примере из х64 ТС запускается х32 и наоборот. А зачем полные пути, если можно поместить файл в корень папки ТС и использовать относительные пути Run(@ScriptDir & "\TOTALCMD.EXE") для портативности?

#78:  Author: Strek PostPosted: Fri Oct 18, 2013 20:04
    —
Skif_off wrote:
использовать относительные пути Run(@ScriptDir & "\TOTALCMD.EXE") для портативности?

Согласен. Просто пока не было нужды в портативности. Но за совет спасибо.

#79:  Author: Serge Yolkin PostPosted: Fri Oct 18, 2013 21:15
    —
mrmerak
%COMMANDER_EXE% ?

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

На JS будет так:
Code:
var
 s=new ActiveXObject('WScript.Shell'),
 t=s.ExpandEnvironmentStrings('%COMMANDER_EXE%');
s.SendKeys('%{F4}');
WScript.Sleep(2000);
s.Exec(t);
//s.Exec(t+' "'+WScript.Arguments(0)+'" "'+WScript.Arguments(1)+'"');
// это - если передавать скрипту %X "%Z%P" "%Z%T"
на бейсике примерно также, но я его дня три изучаю.

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

или ещё короче:
Code:
with(new ActiveXObject('WScript.Shell')){
  sendKeys('%{F4}');
  WScript.Sleep(2000);
  exec(expandEnvironmentStrings('%COMMANDER_EXE%'));
  // exec(expandEnvironmentStrings('%COMMANDER_EXE%')+' "'+
  //  WScript.Arguments(0)+'" "'+WScript.Arguments(1)+'"');
}

#80:  Author: mrmerak PostPosted: Sat Oct 19, 2013 10:35
    —
Serge Yolkin
работает!

#81:  Author: Serge Yolkin PostPosted: Sat Oct 19, 2013 17:55
    —
mrmerak
Знаю Smile

#82:  Author: Skif_off PostPosted: Sun Jul 13, 2014 14:44
    —
Strek
Нет ли проблем при перезапуске? Использую нескомпилированный скрипт (дополненный) - иногда нажимаю, ТС закрывается, но новая копия не открывается. Наверное, надо прикручивать проверку.

#83:  Author: mrmerak PostPosted: Sun Jul 13, 2014 15:22
    —
Skif_off
я на TCIMG.exe rstart перешол

#84:  Author: Skif_off PostPosted: Sun Jul 13, 2014 17:05
    —
mrmerak
Помимо перезапуска еще кое-какие действия повесил, TCIMG недостаточно (ну и мнение по ней пока не сформулировал).

#85:  Author: goraLocation: Иваново PostPosted: Thu Jul 17, 2014 07:51
    —
Skif_off wrote:
Strek
Нет ли проблем при перезапуске? Использую нескомпилированный скрипт (дополненный) - иногда нажимаю, ТС закрывается, но новая копия не открывается. Наверное, надо прикручивать проверку.
После посыла команды закрытия окна нужно делать задержку (0.2...1.0 сек) перед следующим запуском ТС

Попробуйте, может будет понадежнее:
Code:
' Папки разных TC, у меня папки разные
TC64 = "E:\totalcmd64\TOTALCMD64.EXE"
TC86 = "E:\totalcmd86\Totalcmd.exe"

Set WSS = CreateObject("Wscript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colProcess86 = objWMIService.ExecQuery("Select * from Win32_Process Where Name = '" & FSO.GetFileName(TC86) & "'")
Set colProcess64 = objWMIService.ExecQuery("Select * from Win32_Process Where Name = '" & FSO.GetFileName(TC64) & "'")

' MsgBox "TC x86 = " & colProcess86.Count & vbLF & "TC x64 = " & colProcess64.Count, 64, "Info"

' Если есть запущенные процессы TC x86, то все их закрываем (а не убиваем)
' и запускаем один новый процесс TC x86
Restart TC86, colProcess86
' Если есть запущенные процессы TC x64, то все их закрываем (а не убиваем)
' и запускаем один новый процесс TC x64
Restart TC64, colProcess64
WScript.Quit

Sub Restart(ts, colProcessList)
   If colProcessList.Count <> 0 Then
      For Each objProcess in colProcessList
         WScript.Sleep 100
         WSS.Run "taskkill /PID " & objProcess.ProcessID, 0
      Next
      WScript.Sleep 400
      WSS.Run "" & ts & ""
      WScript.Sleep 400
   End If
End Sub

#86:  Author: FlasherLocation: Москва PostPosted: Thu Jul 17, 2014 14:12
    —
gora wrote:
Code:
Если есть запущенные процессы TC x-/-, то все их закрываем
Сомнительная задачка. К чему она?
gora wrote:
Code:
Where Name = '" & FSO.GetFileName(TC86) & "'"
И если exe какой-то копии переименован, тады чего?

#87:  Author: goraLocation: Иваново PostPosted: Thu Jul 17, 2014 17:19
    —
Flasher wrote:
gora wrote:
Code:
Если есть запущенные процессы TC x-/-, то все их закрываем
Сомнительная задачка. К чему она?

Это цитата не из меня. У меня там очень точно, мухи отдельно, котлеты отдельно. Постарайтесь цитировать без искажений о обобщений.
Flasher wrote:
gora wrote:
Code:
Where Name = '" & FSO.GetFileName(TC86) & "'"
И если exe какой-то копии переименован, тады чего?
Тут важно читать следующее:
gora wrote:
Папки разных TC, у меня папки разные

1 И ни какие общие варианты я не рассматривал.
2 Я отвечал Skif_off, который обсуждал код из поста, где имена и пути заданы абсолютными. Smile

#88:  Author: Skif_off PostPosted: Thu Jul 17, 2014 18:57
    —
gora wrote:
После посыла команды закрытия окна нужно делать задержку (0.2...1.0 сек) перед следующим запуском ТС

Почти сразу добавил Sleep(500).

gora wrote:
Попробуйте, может будет понадежнее

taskkill /PID - не очень корректно Smile

#89:  Author: goraLocation: Иваново PostPosted: Thu Jul 17, 2014 19:42
    —
Skif_off wrote:
taskkill /PID - не очень корректно

Чем?

#90:  Author: FlasherLocation: Москва PostPosted: Thu Jul 17, 2014 19:51
    —
gora wrote:
Это цитата не из меня. У меня там очень точно, мухи отдельно, котлеты отдельно. Постарайтесь цитировать без искажений о обобщений.
Раз про точность заговорили, "не из меня" или "не из моего кода"? "о обобщений" - это как?
В коде две строки. Мне их дважды предлагается повторить? Или лаконичность тут отменили?
gora wrote:
Тут важно читать следующее:
Это я прочёл сразу, суть моего вопроса от этого не пострадала.
gora wrote:
1 И ни какие общие варианты я не рассматривал.
Да ну? А перебор в цикле с завершением всех запущенных процессов с тем же именем?



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


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

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

Powered by phpBB © 2001, 2005 phpBB Group