ExecuteProcess
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)