2 votes

Supprimer l'interface utilisateur d'une application sous Windows

Nous disposons d'un moteur de script (fonctionnant sous Windows) qui lance une autre application plusieurs milliers de fois pendant que nous effectuons notre travail. Cette autre application a une interface utilisateur très active (la fenêtre principale apparaît, fait clignoter plusieurs boîtes de dialogue, fait son travail, puis se ferme). Idéalement, nous aimerions supprimer complètement l'interface utilisateur de l'application enfant afin que l'utilisateur puisse continuer à travailler sur son poste de travail.

Nous n'avons aucun contrôle sur le code de l'autre application, nous devons donc être en mesure d'obtenir ce résultat à partir de notre processus externe. Nous lançons l'autre processus, donc notre application est le propriétaire du nouveau processus, si cela peut vous aider.

Forcer la réduction de la fenêtre principale de l'application en envoyant un message de fenêtre après le lancement ne semble pas être une bonne stratégie, parce que nous devons lancer l'application plusieurs milliers de fois au cours de notre exécution (nous pourrions réduire la fenêtre principale à chaque fois, mais l'expérience de l'utilisateur se terminerait, je pense, par le changement du focus et l'interruption du reste de son travail). De plus, l'application en question semble appeler intentionnellement SW_SHOW, de sorte que même si nous minimisons l'application, elle revient.

Quelqu'un a-t-il une approche créative ou intelligente à ce sujet ? Peut-être un moyen de pousser l'interface utilisateur de l'application dans un bureau différent qui n'interférera pas avec le travail régulier de l'utilisateur ? (Le problème est que, j'en suis presque sûr, Windows ne prend pas en charge les bureaux virtuels...).

Notez que je suis d'accord pour supprimer complètement l'interface utilisateur de l'application enfant.

2voto

David Heffernan Points 292687

Windows prend en effet en charge les systèmes d'information virtuels. bureaux . La solution que vous proposez devrait fonctionner à merveille.

Créer un nouveau bureau avec CreateDesktop mais ne pas y basculer (évidemment). Ensuite, lorsque vous créez le processus, spécifiez ce bureau dans le champ STARTUPINFO que vous passez à la structure CreateProcess .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X