Suite à un post de Laurent dans le newsgroup, demandant de pouvoir gérer en "DDE" : - savoir si son application est déjà lancée - déclencher un traitement dans l'application déjà lancée
Nous utilisions cette technique en FPW2.6 pour imposer qu'une seule instance de notre application sur un poste,
Cordialement Francis FAURE
Code source :
* * illustration de l'utilisation des services DDE * - Tester si l'application est déjà lancée * - Si oui : elle est déjà lancée : envoyer un message demandant un traitment dans l'autre application et sortir de cette nouvelle instance * - Si non : installer un serveur DDE *
#define MON_SERVICE "NomDeMonAppli"
* tester si l'appli est déjà démarrée...
=DDEsetOption("SAFETY",.F.)
v_Canal = DDEInitiate(MON_SERVICE, "system")
v_Retour = DDElastError()
=DDEsetOption("SAFETY",.T.) if v_Retour = 0 * Service déjà lancé ...
=ddeterminate(v_Canal)
* demander à l'autre instance de l'application de zoommer (exemple)
v_Canal = DDEInitiate(MON_SERVICE, "ACTIONS")
=DDEEXECUTE(v_Canal, "ZOOM")
=ddeterminate(v_Canal)
WAITwindows"Wait windows pour simuler une application en cours d'utilisation"
* arret du service DDE
=ddesetservice(MON_SERVICE, "RELEASE") return
* Procedure pour le serveur DDE Procedure ProcActions(Channel, Action, Item, Data, Format, Advise) IF Action="EXECUTE" DOcase CASE DATA="ZOOM" * exemple _screen.WindowState = 1 _screen.WindowState = 2 endcase endif return
Commentaires
le 11/10/2006, laurent.dellacherie a écrit : Un grand merci pour cette exemple
Un grand merci pour cette exemple