Запуск нескольких программ одновременно, Как, по клику на один файл, запустить сразу два
|
nokeMoH
профи!
Группа: Пользователи Сообщений: 1.076 Регистрация: 23.08.2008 Пользователь №: 1.040.887
Респектов: 124
Предупреждений:
| Пожалуйста помогите, очень нужно.. Хочется по клику на Один файл запустить сразу два, так как это можно сделать в [.bat] файлах, но желательно, чтобы это было [.exe] приложение, активирующее запуск сразу двух других, самый простой обычный запуск, без задержек, без заморочек.. Посоветуйте пожалуйста самый простой способ для WinXP, чтобы был самый меньший из возможных размер "активатора", и чтобы не висел в процессах, по клику - запустился, открыл два приложения, убрался из процессов.. | |
| |
22.07.2015 - 1:03 |
dimusik
Born in the USSR
[SoftoRooMTeaM]
Группа: Модераторы Сообщений: 10.904 Регистрация: 9.09.2006 Из: Mogilev Пользователь №: 224.934
Респектов: 3968
| nokeMoH, Jitbit Macro Recorder как вариант, если нужен именно exe файл, накидать простейший батник можно например этим QuicklyLink. Программы, создающие exe файлы, как правило требуют своего наличия в системе, либо создается батник и потом при помощи программ типа BAT to EXE Converter перегоняется в exe. Если только на своем компе запускать будете, то Jitbit Macro Recorder хватит. | |
| |
22.07.2015 - 11:11 |
nokeMoH
профи!
Группа: Пользователи Сообщений: 1.076 Регистрация: 23.08.2008 Пользователь №: 1.040.887
Респектов: 124
Предупреждений:
| dimusik, конвертер из [.bat] в [.exe] к сожалению не подходит, не работает так, как нужно, хотелось бы увидеть какое-нибудь независимое [.exe] приложение работающее не с помощью [.bat] направления.. Если это не очень трудно, то где и как можно написать такое простейшее приложение [.exe], где бы например список открываемых файлов этим приложением лежал бы к примеру рядом с этим же приложением в [.ini] формате ?.. Есть ещё вероятность, что заработает другой способ, пожалуйста подскажите мне.. На том же сайте имеется конвертер из [.vbs] в [.exe] .... Знания по программированию данных скриптов отсутствуют, но этот вариант может сработать.. Можете пожалуйста привести самый какой-нибудь простейший код для скрипта [.vbs], который открывал бы после себя пару файлов, скажем [1.txt] и [2.txt] из корневой папки [Локальный диск C:], а используя этот код, я бы попробовал изменить пути на нужные файлы, и скомпилировать результат этой утилитой в [.exe] файл ?.. Дополнено: ну или если бы можно было как-нибудь возможным модифицировать обычный ярлык [.lnk] на запуск сразу двух приложений.. | |
| |
22.07.2015 - 14:36 |
dimusik
Born in the USSR
[SoftoRooMTeaM]
Группа: Модераторы Сообщений: 10.904 Регистрация: 9.09.2006 Из: Mogilev Пользователь №: 224.934
Респектов: 3968
| nokeMoH, в скриптах не силен, запуск нескольких приложений с одного ярлыка возможен, примеры можно посмотреть здесь Но мне кажется, Вы пытаетесь пойти не самым простым путем Создайте батник при помощи QuicklyLink, сохраните как проект, чтобы быстро изменять в любое время, откройте его в Advanced BAT to EXE Converter Pro, залил портабл версию, создайте exe-файл, который запустится на любой машине. Все отлично работает, только что проверил и для каких целей Вам нужны эти заморочки со скриптами, если не секрет и чем не устраивают батники? | |
| |
24.07.2015 - 8:48 |
nokeMoH
профи!
Группа: Пользователи Сообщений: 1.076 Регистрация: 23.08.2008 Пользователь №: 1.040.887
Респектов: 124
Предупреждений:
| dimusik, спасибо большое за нужные советы, тема с ярлыками тоже очень полезная, пригодится и в будущем).. Произошло к сожалению то, чего я не мог предвидеть, оказывается, всё же таки нужна задержка перед выполнением второй Утилиты.. А суть задумки такова: для личных целей хочется объеденить работу двух утилит, дело в том, что 1 утилита работает сама по себе без проблем, а вот вторая работает только когда работает первая.. И если её запустить до открытия утилиты номер один - вываливается ошибка, что мол нету такой программы сейчас.. А первая утилита берёт время на запуск 5-10 секунд, и дело вовсе не в крепкости ПК, такая утилита.. Их обоих хочется объеденить в запуск через песочницу, и выяснилось что [.bat] оттуда почему-то не работает, пишет что [.bat] не является приложением Win32.. С трудом отыскал в сети [.vbs] скрипт на запуск двух программ одновременно, работает, но не то.. Вот как раз [.vbs] работает из песочницы, это проверить удалось.. Но нужна теперь стало быть задержка мужду запусками приложений.. А вот такой вот скрипт, найти уже ни как не могу, помогите пожалуйста | |
| |
24.07.2015 - 15:43 |
dimusik
Born in the USSR
[SoftoRooMTeaM]
Группа: Модераторы Сообщений: 10.904 Регистрация: 9.09.2006 Из: Mogilev Пользователь №: 224.934
Респектов: 3968
| nokeMoH, отредактируйте скрипт, между запуском команд
man sleep sleep 5s - пауза 5 секунд sleep 3m - пауза 3 минуты
В программе Advanced BAT to EXE Converter, между командами можно вставить
ping -n 5 localhost > null
Будет задержка 5 сек
| |
| |
24.07.2015 - 16:38 |
nokeMoH
профи!
Группа: Пользователи Сообщений: 1.076 Регистрация: 23.08.2008 Пользователь №: 1.040.887
Респектов: 124
Предупреждений:
| dimusik, найденный код скрипта, которым распологаем вот он.. » Start two program « Code Option Explicit
Dim strApplication1 Dim strApplication2
Dim strComputer
Dim objSWbemLocator Dim objSWbemServicesEx Dim objSWbemObjectEx Dim objSWbemEventSource Dim objSWbemObjectEx_AnEvent
Dim lngProcessID1 Dim lngProcessID2
strApplication1 = "Notepad.exe" strApplication2 = "Calc.exe"
strComputer = "."
Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator") Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2") Set objSWbemObjectEx = objSWbemServicesEx.Get("Win32_Process")
If objSWbemObjectEx.Create(strApplication1, Null, Null, lngProcessID1) = 0 Then If objSWbemObjectEx.Create(strApplication2, Null, Null, lngProcessID2) = 0 Then Set objSWbemEventSource = objSWbemServicesEx.ExecNotificationQuery( _ "SELECT * FROM __InstanceDeletionEvent WITHIN 1 " & _ "WHERE TargetInstance ISA 'Win32_Process' " & _ "AND (TargetInstance.Handle = '" & CStr(lngProcessID1) & "' " & _ "OR TargetInstance.Handle = '" & CStr(lngProcessID2) & "')") Do Set objSWbemObjectEx_AnEvent = objSWbemEventSource.NextEvent Select Case objSWbemObjectEx_AnEvent.TargetInstance.ProcessID Case lngProcessID1 If objSWbemServicesEx.Get("Win32_Process.Handle='" & CStr(lngProcessID2) & "'").Terminate(0) <> 0 Then WScript.Echo "Can't terminate process [" & objSWbemServicesEx.Get("Win32_Process.Handle='" & CStr(lngProcessID2) & "'").Name & "]" & vbCrLf & _ "Close it manually" End If Exit Do Case lngProcessID2 If objSWbemServicesEx.Get("Win32_Process.Handle='" & CStr(lngProcessID1) & "'").Terminate(0) <> 0 Then WScript.Echo "Can't terminate process [" & objSWbemServicesEx.Get("Win32_Process.Handle='" & CStr(lngProcessID1) & "'").Name & "]" & vbCrLf & _ "Close it manually" End If Exit Do Case Else ' Nothing to do End Select Loop Set objSWbemObjectEx_AnEvent = Nothing Set objSWbemEventSource = Nothing Else WScript.Echo "Can't create process [" & strApplication2 & "]" End If Else WScript.Echo "Can't create process [" & strApplication1 & "]" End If
Set objSWbemObjectEx = Nothing Set objSWbemServicesEx = Nothing Set objSWbemLocator = Nothing
WScript.Quit 0 ' style='text-align:left'> Code Option Explicit
Dim strApplication1 Dim strApplication2
Dim strComputer
Dim objSWbemLocator Dim objSWbemServicesEx Dim objSWbemObjectEx Dim objSWbemEventSource Dim objSWbemObjectEx_AnEvent
Dim lngProcessID1 Dim lngProcessID2
strApplication1 = "Notepad.exe" strApplication2 = "Calc.exe"
strComputer = "."
Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator") Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2") Set objSWbemObjectEx = objSWbemServicesEx.Get("Win32_Process")
If objSWbemObjectEx.Create(strApplication1, Null, Null, lngProcessID1) = 0 Then If objSWbemObjectEx.Create(strApplication2, Null, Null, lngProcessID2) = 0 Then Set objSWbemEventSource = objSWbemServicesEx.ExecNotificationQuery( _ "SELECT * FROM __InstanceDeletionEvent WITHIN 1 " & _ "WHERE TargetInstance ISA 'Win32_Process' " & _ "AND (TargetInstance.Handle = '" & CStr(lngProcessID1) & "' " & _ "OR TargetInstance.Handle = '" & CStr(lngProcessID2) & "')") Do Set objSWbemObjectEx_AnEvent = objSWbemEventSource.NextEvent Select Case objSWbemObjectEx_AnEvent.TargetInstance.ProcessID Case lngProcessID1 If objSWbemServicesEx.Get("Win32_Process.Handle='" & CStr(lngProcessID2) & "'").Terminate(0) <> 0 Then WScript.Echo "Can't terminate process [" & objSWbemServicesEx.Get("Win32_Process.Handle='" & CStr(lngProcessID2) & "'").Name & "]" & vbCrLf & _ "Close it manually" End If Exit Do Case lngProcessID2 If objSWbemServicesEx.Get("Win32_Process.Handle='" & CStr(lngProcessID1) & "'").Terminate(0) <> 0 Then WScript.Echo "Can't terminate process [" & objSWbemServicesEx.Get("Win32_Process.Handle='" & CStr(lngProcessID1) & "'").Name & "]" & vbCrLf & _ "Close it manually" End If Exit Do Case Else ' Nothing to do End Select Loop Set objSWbemObjectEx_AnEvent = Nothing Set objSWbemEventSource = Nothing Else WScript.Echo "Can't create process [" & strApplication2 & "]" End If Else WScript.Echo "Can't create process [" & strApplication1 & "]" End If
Set objSWbemObjectEx = Nothing Set objSWbemServicesEx = Nothing Set objSWbemLocator = Nothing
WScript.Quit 0 »» Нажмите, для закрытия спойлера | Press to close the spoiler «« Сохраните код в файле с расширением «.vbs». В роли «двух программ» выступают Блокнот и Калькулятор.
Если всё работает, - поменяйте в коде скрипта имена исполняемых файлов Блокнота и Калькулятора:
Code strApplication1 = "Notepad.exe" strApplication2 = "Calc.exe"
Цитата | Quote на полные пути к Вашим двум приложениям.
У меня всё получилось, но скрипт немного модифицирован, работает он слейдующим образом:
Скрипт запускает работу сразу двух программ, и закрывает автоматически вторую "парную" программу в том случае, если любую из двух тоже закрывают, например ручками на крестик..
Такой автоматизм мне конечно как бы и ни к чему, вполне хватило бы скрипта и без такой слежки за утилитами.. Подошёл бы вариант запуска самый обычный, с частичкой кода из Вашего примера dimusik..
В таком случае этот код поддаётся хоть какой-нибудь модификации в пользу задержки между запуском ?.. | |
| |
25.07.2015 - 0:00 |
Creative
Опытный юзверь
Группа: Пользователи Сообщений: 102 Регистрация: 30.11.2007 Пользователь №: 628.222
Респектов: 24
Предупреждений:
| nokeMoH, Цитата | Quote найденный код скрипта, которым распологаем вот он.. ...
это что-то достаточно страшное в принципе же - для твоей задачи (если я верно понял ее суть) мне кажется в файле vbs достаточно примерно чего-то вот такого: Code Set WshShell = CreateObject("WScript.Shell") Set WshExec = WshShell.Exec("notepad.exe") WScript.Sleep 5000 Set WshExec = WshShell.Exec("calc.exe")
можно при желании конвертировать vbs в exe, обычно я делаю это с помощью программы ExeScript, она просто добавляет к коду свой маленький подгрузчик, единственный недостаток такого конвертирования - антивирусы начинают воспринимать такой ехе-файл как вирус-троян, видимо их раздражает что код выполняется скрытно, приходится добавлять его в исключения поэтому, если нет большой необходимости (например предотвратить правку кода посторонним) - лучше уж сделать ярлык на сам файл vbs для его запуска автоматом по расширению с помощью виндовской скриптовой машины, так будет с теми же антивирусами проще. | |
| |
|
|