Что нового

[Процессы] 1С: Использовании функции Run для обновления конфигурации из хранилища

photozoom

Новичок
Сообщения
5
Репутация
0
Написал скрипт, который запускает конфигуратор 1С с параметрами.

Код:
Local $sStringParam = ' DESIGNER /F "'& _
	$sInfoBasePath &'" /ConfigurationRepositoryF "' & _
	$sRepositoryPath &'" /ConfigurationRepositoryN "' & _
	$sUserName & '" /ConfigurationRepositoryP "' & _
	$sUserPass & '" /ConfigurationRepositoryUpdateCfg -revised /UpdateDBCfg'

Global $sEnterprisePath = '"C:\Program Files (x86)\1cv8\8.3.6.2332\bin\1cv8s.exe"'

$iPID = Run($sEnterprisePath & $sStringParam, "", @SW_HIDE)


Проблема в получении этого самого PID процесса. Если запустить Run без параметров, то просто запускается окно со списком информационных баз, зато PID этого процесса получаю правильный, если же процесс запускается с параметрами, то PID этого процесса не получаю, точнее получаю PID запуска этого самого окна наверное, который запускает уже другой процесс.
Собственно требуется отследить окончание этого процесса с командной строкой.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Код:
ProcessWaitClose

подождать окончание процесса


Добавлено:
Сообщение автоматически объединено:

или
Код:
RunWait
 
Автор
photozoom

photozoom

Новичок
Сообщения
5
Репутация
0
Так ведь в ProcessWaitClose нужно передать PID того процесса, который мне нужно отследить, проблема то как раз в том что я не могу получить этот PID
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Код:
ProcessExists
вернет PID процесса по имени. Ждите пару секунд после окончания процесса конфигурации, получите имя процесса который он запускает, и получите его PID.
Еще смотрите, если процесс конфигурации запускает дочерний процесс и остается работать, то могут понадобиться функции
Код:
_WinAPI_EnumChildProcess или _WinAPI_GetParentProcess
 
Автор
photozoom

photozoom

Новичок
Сообщения
5
Репутация
0
inververs, большое спасибо за помощь.
Функции
Код:
_WinAPI_EnumChildProcess и _WinAPI_GetParentProcess
я рассматривал до обращения за помощью, но помог Ваш совет
inververs сказал(а):
... Ждите пару секунд после окончания процесса конфигурации...
Вставил сразу после функции
Код:
Run ожидание Sleep 1 секунда и после этого полученный PID передал в _WinAPI_EnumChildProcess
а там уже дело техники)
Спасибо!
 
Верх