PDA

Показать полную графическую версию : [решено] Run в VBE


giperion85
11-03-2012, 19:24
Здравствуйте, возникла необходимость запуска из vbs внешнего exe, с этим ни каких проблем нет, run объекта WScript.Shell. Но мне нужно указать рабочий каталог отличный от места нахождения самого exe, вот как это сделать не пойму. Можно конечно схитрить и сделать Run "cmd /c start /D c:\WorkDir c:\App\Start.exe" но это все как то не эстетично. Пробовал передавать в параметрах ярлык с уже указанным рабочим каталогом открывается диалоговое окно с предложением переместить ярлык, почему? Есть может у кого какие мысли?

Iska
12-03-2012, 02:21
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
Спасибо. + сегодня все таки запустил через run ярлык, просто не верно путь указывал




© OSzone.net 2001-2012