ExecuteProcess

Spuštění externí aplikace
declare procedure ExecuteProcess dll "ActualDocument" (string, boolean)
ExecuteProcess("MScheduler.exe -se", false)
ExecuteProcess(CommandLine, Wait)

Parametry

CommandLine

Typ: string

Příkaz včetně parametrů.

Wait

Typ: boolean

Udává, zda má funkce čekat na dokončení procesu.

Popis

Spustí program (vytvoří proces) s libovolným počtem parametrů. Způsob vytvoření procesu je možné ovlivnit nastavením vlastnosti CreationFlags pomocí SetPropertyInt , např:

SetPropertyInt("CreationFlags", 134218272) // CREATE_NEW_PROCESS_GROUP + NORMAL_PRIORITY_CLASS + CREATE_NO_WINDOW
ExecuteProcess("RegServer.bat", true)
ExitCode := GetPropertyInt("ExitCode")
Nastavení příznaků SetPropertyInt musí být voláno bezprostředně před vytvořením procesu. Pokud nejsou příznaky nastaveny, použijí se výchozí CREATE_NEW_PROCESS_GROUP + NORMAL_PRIORITY_CLASS . Příznak se zadává jako součet hodnot odpovídajících požadovaným vlastnostem. Podrobnosti k jednotlivým konstantám je možné vyhledat na internetu. Možné hodnoty:
Windows konstanta Hodnota
DEBUG_PROCESS 1
DEBUG_ONLY_THIS_PROCESS 2
CREATE_SUSPENDED 4
DETACHED_PROCESS 8
CREATE_NEW_CONSOLE 16
NORMAL_PRIORITY_CLASS 32
IDLE_PRIORITY_CLASS 64
HIGH_PRIORITY_CLASS 128
REALTIME_PRIORITY_CLASS 256
CREATE_NEW_PROCESS_GROUP 512
CREATE_UNICODE_ENVIRONMENT 1024
CREATE_SEPARATE_WOW_VDM 2048
CREATE_SHARED_WOW_VDM 4096
CREATE_FORCEDOS 8192
CREATE_DEFAULT_ERROR_MODE 67108864
CREATE_NO_WINDOW 134217728
PROFILE_USER 268435456
PROFILE_KERNEL 536870912
PROFILE_SERVER 1073741824

Ukončovací kód procesu, tzv. Exit code, je uložen jako hodnota klíče ExitCode . Tuto hodnotu je možné načíst pomocí funkce GetPropertyInt , a to bezprostředně po spuštění programu (ukázka výše). Pokud skript nečeká na ukončení procesu (viz parametr Wait ), je ukončovací kód procesu naplněn vždy hodnotou 0 , bez ohledu na skutečný kód při ukončení.

Pomocí funkce GetPropertyInt s hodnotou klíče ProcessId lze získat Id spuštěného procesu, za předpokladu že skript nečeká na ukončení procesu.

Pro ověření, zda při spuštění nedošlo k chybě, použijte funkci GetLastErrorCode resp. GetLastErrorMessage .

Ukázky volání

  • Spustí editor eskalací enTeam Scheduler a nečeká na ukončení procesu (zavření aplikace).
    ExecuteProcess("MScheduler.exe -se", false)
  • Spustí dávku RegServer.bat a čeká na její dokončení.
    ExecuteProcess("RegServer.bat", true)

Příklady použití