giperion85 |
11-03-2012 19:24 1877033 |
Run в VBE
Здравствуйте, возникла необходимость запуска из vbs внешнего exe, с этим ни каких проблем нет, run объекта WScript.Shell. Но мне нужно указать рабочий каталог отличный от места нахождения самого exe, вот как это сделать не пойму. Можно конечно схитрить и сделать Run "cmd /c start /D c:\WorkDir c:\App\Start.exe" но это все как то не эстетично. Пробовал передавать в параметрах ярлык с уже указанным рабочим каталогом открывается диалоговое окно с предложением переместить ярлык, почему? Есть может у кого какие мысли?
|
giperion85, есть несколько способов.
1. Сменить текущий каталог, запустить процесс, восстановить текущий каталог:
Код:
Option Explicit
Dim objWshShell
Dim strCurFolder
Set objWshShell = WScript.CreateObject("WScript.Shell")
strCurFolder = objWshShell.CurrentDirectory
objWshShell.CurrentDirectory = "c:\Temp"
objWshShell.Run "notepad.exe", 1, False
objWshShell.CurrentDirectory = strCurFolder
Set objWshShell = Nothing
WScript.Quit 0
2. Использовать Wbem:
Код:
Option Explicit
Dim strComputer
Dim lngProcessID
Dim objSWbemLocator
Dim objSWbemServicesEx
strComputer = "."
Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
If objSWbemServicesEx.Get("Win32_Process").Create("notepad.exe", "c:\Temp", Null, lngProcessID) = 0 Then
WScript.Echo "Process [notepad.exe] created successfully. Process ID: [" & lngProcessID & "]."
Else
WScript.Echo "Process [notepad.exe] could not be created."
End If
Set objSWbemServicesEx = Nothing
Set objSWbemLocator = Nothing
WScript.Quit 0
Я намеренно привёл явно избыточный код для ясности понимания процесса.
|
giperion85 |
12-03-2012 21:44 1877938 |
Спасибо. + сегодня все таки запустил через run ярлык, просто не верно путь указывал
|
Время: 18:59.
© OSzone.net 2001-