Bonjour,
j'ai besoin de contrôler le nombre d'instances exécutées d'une application "CSAuto" (il n'en faut qu'UNE seule). N'ayant pas accès au code source de l'appli CSAuto, je dois développer une autre application qui exécutera CSAuto et l'empêchera d'être ouvert plusieurs fois. De même, elle devra fermer les 2 si une des 2 est fermée.
J'ai fait un mutex sur mon appli qui exécute CSAuto donc je contrôle bien le nombre d'instances.
J'exécute CSAuto dans le constructeur de l'appli :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| __fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
/* ShellExecute(NULL, // Handle de la fenêtre parent
"open", // Action à effectuer
"CSAuto.exe", // Fichier
"", // Paramètres
"C:\\yep", // Répertoire par défaut
SW_SHOWDEFAULT // Manière d'afficher
); */
system("start c:\\yep\\CSAuto.exe");
// system("c:\\yep\\CSAuto.exe");
HWND h = FindWindow("CSAuto", NULL);
// ......
// Application->Minimize();
// Application->Terminate();
} |
Je ne sais pas encore quelle est la meilleur façon de l'exécuter, sachant que system affiche une fenêtre de commandes gênante mais permet d'attendre la destruction de CSAuto avant de se fermer.
Maintenant il s'agit de contrôler les fermetures des programmes. Comment forcer la fermeture d'un programme indépendant d'un autre ? Il ne faut pas qu'on puisse fermer mon appli et laisser ouvert CSAuto et inversement...
Peut-être en récupérant le Handle de CSAuto mais comment le trouver ?
J'ai essayé ceci mais h retourne 0 :
HWND h = FindWindow("CSAuto", NULL);
Merci par avance.
Partager