Здравствуйте, Chips, Вы писали:
C>Необходимо запускать из приложения скрипты VBS. Т.к. это не Экзешник и не БАТник, он его на прямую не запускает.
C>Пробовал Запускать как параметр к запускаемому файлу Wscript.exe, но возникла другая проблема.
C>Не могу разобраться с функцией CreateProcess(...) — насколько я понял первый параметр отвечает за полный путь к запускаемому файлу, а второй параметр за аргументы, которые приписываются к запускаемому файлу. Это так? Если так, то как корректно его запустить?
C>(использую CreateProcess(...), т.к. нужно отследить еще и завершение приложения)
C>В итоге, Вопрос Темы такой: Какие есть способы запуска VBS скрипта из программы.
C>Спасибо
Пример работы с CreateProcess:
var
pi : TProcessInformation;
si : TStartupInfo;
begin
ZeroMemory(@si,sizeof(si));
si.cb:=SizeOf(si);
if not CreateProcess(
PChar(lpApplicationName), //pointer to name of executable module
PChar(lpCommandLine), // Command line.
nil, // Process handle not inheritable.
nil, // Thread handle not inheritable.
False, // Set handle inheritance to FALSE.
0, // No creation flags.
nil, // Use parent's environment block.
nil, // Use parent's starting directory.
si, // Pointer to STARTUPINFO structure.
pi ) // Pointer to PROCESS_INFORMATION structure.
then begin
Result:=false;
RaiseLastWin32Error;
Exit;
end;
while WaitforSingleObject(PI.hProcess,200)=WAIT_TIMEOUT do application.ProcessMessages;
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
end;
(с)DRKB от Vit
Если надо отслеживать завершение приложения, то это оптимальный способ.