diff --git a/agent_v0/agent_v1/core/uia_helper.py b/agent_v0/agent_v1/core/uia_helper.py index 80061f853..ff63d4c25 100644 --- a/agent_v0/agent_v1/core/uia_helper.py +++ b/agent_v0/agent_v1/core/uia_helper.py @@ -37,6 +37,21 @@ logger = logging.getLogger(__name__) # Timeout par défaut pour les appels UIA (en secondes) _DEFAULT_TIMEOUT = 5.0 +# Masquer la fenêtre console lors du spawn de lea_uia.exe sur Windows. +# Sans ce flag, chaque appel (à chaque clic utilisateur pendant +# l'enregistrement) fait apparaître une fenêtre cmd noire brièvement +# visible à l'écran → ralentit la souris et pollue les screenshots +# capturés (le VLM peut "voir" le chemin lea_uia.exe comme texte cliqué). +# +# La valeur 0x08000000 correspond à CREATE_NO_WINDOW défini dans +# l'API Windows. Sur Linux/Mac, la valeur est 0 et `creationflags` +# est ignoré. getattr() gère le cas où Python expose déjà la constante +# sur Windows. +if platform.system() == "Windows": + _SUBPROCESS_CREATION_FLAGS = getattr(subprocess, "CREATE_NO_WINDOW", 0x08000000) +else: + _SUBPROCESS_CREATION_FLAGS = 0 + @dataclass class UiaElement: @@ -166,6 +181,7 @@ class UIAHelper: timeout=self._timeout, encoding="utf-8", errors="replace", + creationflags=_SUBPROCESS_CREATION_FLAGS, ) if result.returncode != 0: logger.debug( diff --git a/core/workflow/uia_helper.py b/core/workflow/uia_helper.py index 80061f853..ff63d4c25 100644 --- a/core/workflow/uia_helper.py +++ b/core/workflow/uia_helper.py @@ -37,6 +37,21 @@ logger = logging.getLogger(__name__) # Timeout par défaut pour les appels UIA (en secondes) _DEFAULT_TIMEOUT = 5.0 +# Masquer la fenêtre console lors du spawn de lea_uia.exe sur Windows. +# Sans ce flag, chaque appel (à chaque clic utilisateur pendant +# l'enregistrement) fait apparaître une fenêtre cmd noire brièvement +# visible à l'écran → ralentit la souris et pollue les screenshots +# capturés (le VLM peut "voir" le chemin lea_uia.exe comme texte cliqué). +# +# La valeur 0x08000000 correspond à CREATE_NO_WINDOW défini dans +# l'API Windows. Sur Linux/Mac, la valeur est 0 et `creationflags` +# est ignoré. getattr() gère le cas où Python expose déjà la constante +# sur Windows. +if platform.system() == "Windows": + _SUBPROCESS_CREATION_FLAGS = getattr(subprocess, "CREATE_NO_WINDOW", 0x08000000) +else: + _SUBPROCESS_CREATION_FLAGS = 0 + @dataclass class UiaElement: @@ -166,6 +181,7 @@ class UIAHelper: timeout=self._timeout, encoding="utf-8", errors="replace", + creationflags=_SUBPROCESS_CREATION_FLAGS, ) if result.returncode != 0: logger.debug(