25/04/2024
Windev et les Api WindowsNb de visiteurs en ligne : 1
>> Introduction << >> Codes et Forum << >> Download <<


Rubrique : 9 - Divers       Sujet : Fermer une application à partir d'une autre - WD8
Auteur Message
 Annie Posté le : 07/10/2005 19:48:48


Salut!

J'ai une application qui démarre WDADMINEXE de Windev (permet de déloggué tous les utilisateurs de mon application afin de pouvoir faire une mise à jour) et j'essaie de la fermer après un certain délai.  Lorsque l'application démarre sur une session régulière (ouvert) tout va bien.  J'ai récupéré le code de l'exemple WD8 EnvoieTouche.  

Si mon programme roule en tâche planifiée dans une session fermée ou verrouillée, alors WDADMINEXE ne se ferme pas.

Voici le code que je fais:
//---------------------------------------------------
Ouverture de l'application : sApp = "C:\xx\WDADMINEXE.EXE"
FONCTION Ouvrir()

// Lancement de l'application à piloter
SI PAS LanceAppliAssociée(:sApp) ALORS
RENVOYER Faux
SINON
RENVOYER Vrai
FIN
//---------------------------------------------------

Pour fermer mon application :
PROCEDURE Fermer()

// Cherche l'application en mémoire
SI :TrouverHandle()=0 ALORS RENVOYER Faux

// Envoie la séquence Alt-F4 à l'application pour la fermer
SI PAS EnvoieTouche("%{F4}",:hDestinataire) ALORS
RENVOYER -1
SINON
RENVOYER Vrai
FIN
//---------------------------------------------------
FONCTION TrouverHandle()
// sClassApp = WindevObject
// sTitreApp = "Contrôle des exécutables Windev"
// Recherche du Handle du programme d'après son nom de classe
// et éventuellement le titre de sa fenêtre principale

i est un entier
:hDestinataire=0
TANTQUE :hDestinataire=0
i++
SI i>500 ALORS SORTIR
SI PAS :sTitreApp~="" ALORS
// Recherche avec titre spécifié
:hDestinataire = AppelDLL32("user32", "FindWindowA" , :sClassApp, &:sTitreApp)
SINON
// Recherche sans titre spécifié
:hDestinataire = AppelDLL32("user32", "FindWindowA" , :sClassApp, Null)
FIN
FIN
RENVOYER :hDestinataire
//---------------------------------------------------


Je me demandais si via un API ça pourrait fonctionner.  Nous avons vérifié toutes les permissions et de ce côté ça semble correcte.

Merci!


>> Poster un message dans un NOUVEAU sujet.
>> Poster un message dans ce sujet.