View previous topic :: View next topic |
Author |
Message |
mrmerak
Joined: 20 Aug 2007 Posts: 441
|
(Separately) Posted: Fri Oct 18, 2013 15:05 Post subject: |
|
|
Народ, а кто может мой простенький vbs-скрипт переделать, чтобы он был универсальный для х32 и х64
Code: | Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys("%{F4}")
WScript.Sleep 400
WshShell.Run "TOTALCMD.EXE" |
_________________ TC 9.51 | Win10 1903 |
|
Back to top |
|
|
Skif_off
Joined: 28 Nov 2012 Posts: 1236
|
(Separately) Posted: Fri Oct 18, 2013 19:24 Post subject: |
|
|
Strek wrote: | У меня exe-шка на AutoIt, с таким кодом: |
В выложенном примере из х64 ТС запускается х32 и наоборот. А зачем полные пути, если можно поместить файл в корень папки ТС и использовать относительные пути Run(@ScriptDir & "\TOTALCMD.EXE") для портативности? |
|
Back to top |
|
|
Strek
Joined: 17 Oct 2010 Posts: 197
|
(Separately) Posted: Fri Oct 18, 2013 20:04 Post subject: |
|
|
Skif_off wrote: | использовать относительные пути Run(@ScriptDir & "\TOTALCMD.EXE") для портативности? |
Согласен. Просто пока не было нужды в портативности. Но за совет спасибо. |
|
Back to top |
|
|
Serge Yolkin
Joined: 25 Jul 2009 Posts: 664
|
(Separately) Posted: Fri Oct 18, 2013 21:15 Post subject: |
|
|
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)+'"');
} |
|
|
Back to top |
|
|
mrmerak
Joined: 20 Aug 2007 Posts: 441
|
(Separately) Posted: Sat Oct 19, 2013 10:35 Post subject: |
|
|
Serge Yolkin
работает! _________________ TC 9.51 | Win10 1903 |
|
Back to top |
|
|
Serge Yolkin
Joined: 25 Jul 2009 Posts: 664
|
(Separately) Posted: Sat Oct 19, 2013 17:55 Post subject: |
|
|
mrmerak
Знаю |
|
Back to top |
|
|
Skif_off
Joined: 28 Nov 2012 Posts: 1236
|
(Separately) Posted: Sun Jul 13, 2014 14:44 Post subject: |
|
|
Strek
Нет ли проблем при перезапуске? Использую нескомпилированный скрипт (дополненный) - иногда нажимаю, ТС закрывается, но новая копия не открывается. Наверное, надо прикручивать проверку. |
|
Back to top |
|
|
mrmerak
Joined: 20 Aug 2007 Posts: 441
|
(Separately) Posted: Sun Jul 13, 2014 15:22 Post subject: |
|
|
Skif_off
я на TCIMG.exe rstart перешол _________________ TC 9.51 | Win10 1903 |
|
Back to top |
|
|
Skif_off
Joined: 28 Nov 2012 Posts: 1236
|
(Separately) Posted: Sun Jul 13, 2014 17:05 Post subject: |
|
|
mrmerak
Помимо перезапуска еще кое-какие действия повесил, TCIMG недостаточно (ну и мнение по ней пока не сформулировал). |
|
Back to top |
|
|
gora
Joined: 30 Dec 2004 Posts: 442 Location: Иваново
|
(Separately) Posted: Thu Jul 17, 2014 07:51 Post subject: |
|
|
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 |
_________________ Win7 SP1 Ultimate x64, TC8.52a x64 |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Jul 17, 2014 14:12 Post subject: |
|
|
gora wrote: | Code: | Если есть запущенные процессы TC x-/-, то все их закрываем |
| Сомнительная задачка. К чему она?
gora wrote: | Code: | Where Name = '" & FSO.GetFileName(TC86) & "'" |
| И если exe какой-то копии переименован, тады чего? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
gora
Joined: 30 Dec 2004 Posts: 442 Location: Иваново
|
(Separately) Posted: Thu Jul 17, 2014 17:19 Post subject: |
|
|
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, который обсуждал код из поста, где имена и пути заданы абсолютными. _________________ Win7 SP1 Ultimate x64, TC8.52a x64 |
|
Back to top |
|
|
Skif_off
Joined: 28 Nov 2012 Posts: 1236
|
(Separately) Posted: Thu Jul 17, 2014 18:57 Post subject: |
|
|
gora wrote: | После посыла команды закрытия окна нужно делать задержку (0.2...1.0 сек) перед следующим запуском ТС |
Почти сразу добавил Sleep(500).
gora wrote: | Попробуйте, может будет понадежнее |
taskkill /PID - не очень корректно |
|
Back to top |
|
|
gora
Joined: 30 Dec 2004 Posts: 442 Location: Иваново
|
(Separately) Posted: Thu Jul 17, 2014 19:42 Post subject: |
|
|
Skif_off wrote: | taskkill /PID - не очень корректно |
Чем? _________________ Win7 SP1 Ultimate x64, TC8.52a x64 |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Jul 17, 2014 19:51 Post subject: |
|
|
gora wrote: | Это цитата не из меня. У меня там очень точно, мухи отдельно, котлеты отдельно. Постарайтесь цитировать без искажений о обобщений. | Раз про точность заговорили, "не из меня" или "не из моего кода"? "о обобщений" - это как?
В коде две строки. Мне их дважды предлагается повторить? Или лаконичность тут отменили?
gora wrote: | Тут важно читать следующее: | Это я прочёл сразу, суть моего вопроса от этого не пострадала.
gora wrote: | 1 И ни какие общие варианты я не рассматривал. | Да ну? А перебор в цикле с завершением всех запущенных процессов с тем же именем? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
|