PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Fermeture application
Fermeture application
Iniciado por yo-laloue, 29,oct. 2004 05:00 - 5 respuestas
Publicado el 29,octubre 2004 - 05:00
Je bosse sur un application Windev(A) qui lance une autre application WINDEV(B)

A lance donc B.

Lorsque je quitte B, l'application A vérifie si l'application B est toujours en cours.

Régulièrement mais pas systématiquement, l'application B semble se ferme correctement car elle n'apparaît plus dans la barre de tâche ni dans la liste des applications mais apparaît toujours dans la liste des processus.

Du coup mon application A pense que l'application B est toujours active alors que l'utilisateur l'a fermé.

De quoi cela peut-il provenir ?
1 - un bug Windows XP ?
2 - un bug Windev ?
3 - une mauvaise libération d'objets dans le code Windev ?
4 - Autre ?

Merci de votre réponse si vous avez rencontré le problème ou que vous avez des pistes.
Publicado el 29,octubre 2004 - 12:19
bonjour
J'ai le même cas une application A principale qui lance B
Pour éviter tout problème, j'ai programmé un dialogue avec un message
windows perso à l'appli
De cette façon, c'est l'appli A qui dis à l'appli B de se fermer cela evite
de passer par exetermine qui de temps en temps
ne fonctionne pas.

pour obtenir de windows un numéro de message unique il faut utiliser

APPLICATION A ET B

GLOBAL
WM_NumMessage est un entier
WM_Message est une chaîne fixe sur 32 = "TOTOTUTU" // une
phrase unique
NumEveRx est un entier = 0

OUVERTURE DE LA FENETRE
WM_NumMessage = AppelDLL32("USER32","RegisterWindowMessageA",&WM_Message)
NumEveRx = Evénement("RxEvenement", "*.*", WM_NumMessage)
IF NumEveRx = 0 THEN
Erreur("Impossible d'ouvrir la liaison avec le programme princiapal
!","Contacter d'urgence le service informatique.")
Ferme(Mainform)
END

FERMETURE DE LA FENETRE
IF NumEveRx>0 THEN FinEvénement(NumEveRx)

PROCEDURE GLOBALE
PROCEDURE RxEvenement(iMessage, wParam, lParam)
// iMessage sera toujours égal à WM_NumMessage
// wParam = 1° parametre de SendMessage
// lParam = 2° parametre e SendMessage


A veut envoyer un message vers B
----------------------------------
SendMessage(SysFenHandle("NOM APPLICATION B"), WM_NumMessage, 1° parametre =
entier , 2° parametre = entier )


B veut envoyer un message vers A
----------------------------------
SendMessage(SysFenHandle("NOM APPLICATION A"), WM_NumMessage, 1° parametre =
entier , 2° parametre = entier )

Si la procedure RxEvenement de B est du style
PROCEDURE RxEvenement(iMessage, wParam, lParam)
if wParam=0x0 then ferme(B)

et que A execute
SendMessage(SysFenHandle("NOM APPLICATION B"), WM_NumMessage, 0x00 , 0x00 )

alors B se fermera de suite.....


Pour envoyer des chaînes c'est plus compliqué il faut passer par des
FileMapping mais c'est faisable


"Yohann LALOUE" <yo-laloue@soregor.fr> a écrit dans le message de
news:41818c97$1@news.pcsoft.fr...
> Je bosse sur un application Windev(A) qui lance une autre application
WINDEV(B)

A lance donc B.

Lorsque je quitte B, l'application A vérifie si l'application B est

toujours en cours.

Régulièrement mais pas systématiquement, l'application B semble se ferme

correctement car elle n'apparaît plus dans la barre de tâche ni dans la
liste des applications mais apparaît toujours dans la liste des processus.

Du coup mon application A pense que l'application B est toujours active

alors que l'utilisateur l'a fermé.

De quoi cela peut-il provenir ?
1 - un bug Windows XP ?
2 - un bug Windev ?
3 - une mauvaise libération d'objets dans le code Windev ?
4 - Autre ?

Merci de votre réponse si vous avez rencontré le problème ou que vous avez

des pistes.



Publicado el 29,octubre 2004 - 12:42
"Yohann LALOUE" <yo-laloue@soregor.fr> a écrit dans le message de news:
41818c97$1@news.pcsoft.fr...
Je bosse sur un application Windev(A) qui lance une autre application
WINDEV(B)

A lance donc B.

Lorsque je quitte B, l'application A vérifie si l'application B est
toujours en cours.

Régulièrement mais pas systématiquement, l'application B semble se ferme
correctement car elle n'apparaît plus dans la barre de tâche ni dans la
liste des applications mais apparaît toujours dans la liste des processus.

Du coup mon application A pense que l'application B est toujours active
alors que l'utilisateur l'a fermé.

De quoi cela peut-il provenir ?
1 - un bug Windows XP ?
2 - un bug Windev ?
3 - une mauvaise libération d'objets dans le code Windev ?
4 - Autre ?

Merci de votre réponse si vous avez rencontré le problème ou que vous avez
des pistes.





Bonjour

J'ai sensiblement le même problème sur une application qui tourne sous
Windows XP.
Ainsi, quand je la ferme et dans certaines ciroconstances, elle apparaît
toujours dans la liste des processus.

En fait, chez moi, je crois avoir peut-être trouvé ce qui coince.
En effet, dans mon application, l'utilisateur peut quitter le programme en
de multiples endroits. Ainsi, dans la première fenêtre du projet lancée par
un Utilise, j'ai un bouton quitter.
Pour des questions d'emplacement de code, l'instruction contenue dans le
code "clic" est un ferme et non un finprogramme.
Et c'est là que cela coince à mon avis.

A+

Val
Publicado el 03,noviembre 2004 - 11:10
Cette solution me semble cohérente mais quelle est est la différence
entre un "ferme" de la fenêtre principale et un "finprogramme" ?

Qu'est ce que la seconde fonction fait de plus ?

Merci

A+

Val a écrit:
Bonjour

J'ai sensiblement le même problème sur une application qui tourne sous
Windows XP.
Ainsi, quand je la ferme et dans certaines ciroconstances, elle apparaît
toujours dans la liste des processus.

En fait, chez moi, je crois avoir peut-être trouvé ce qui coince.
En effet, dans mon application, l'utilisateur peut quitter le programme en
de multiples endroits. Ainsi, dans la première fenêtre du projet lancée par
un Utilise, j'ai un bouton quitter.
Pour des questions d'emplacement de code, l'instruction contenue dans le
code "clic" est un ferme et non un finprogramme.
Et c'est là que cela coince à mon avis.

A+

Val

Publicado el 03,noviembre 2004 - 13:23
Elle te permet de terminer ton application
sans exécuter le code de fin de projet en fonction
des paramètres et surtout n'importe où.
Yves


"Yohann LALOUE" <yo-laloue@soregor.fr> a écrit dans le message de news:
418897bb@news.pcsoft.fr...

Cette solution me semble cohérente mais quelle est est la différence
entre un "ferme" de la fenêtre principale et un "finprogramme" ?

Qu'est ce que la seconde fonction fait de plus ?

Merci

A+

Val a écrit:
Bonjour

J'ai sensiblement le même problème sur une application qui tourne sous
Windows XP.
Ainsi, quand je la ferme et dans certaines ciroconstances, elle apparaît
toujours dans la liste des processus.

En fait, chez moi, je crois avoir peut-être trouvé ce qui coince.
En effet, dans mon application, l'utilisateur peut quitter le programme

en
> > de multiples endroits. Ainsi, dans la première fenêtre du projet lancée
par
un Utilise, j'ai un bouton quitter.
Pour des questions d'emplacement de code, l'instruction contenue dans le
code "clic" est un ferme et non un finprogramme.
Et c'est là que cela coince à mon avis.

A+

Val


Publicado el 03,noviembre 2004 - 15:58
Je ne comprend pas c'est l'intérêt de cette fonction car un simple ferme
de la fenêtre principale suffit à fermer l'appli non ?

Sais tu si elle libère des choses en mémoire que le ferme ne ferait pas ?

Merci

A+

Yves.83 a écrit:
Elle te permet de terminer ton application
sans exécuter le code de fin de projet en fonction
des paramètres et surtout n'importe où.
Yves


"Yohann LALOUE" <yo-laloue@soregor.fr> a écrit dans le message de news:
418897bb@news.pcsoft.fr...

Cette solution me semble cohérente mais quelle est est la différence
entre un "ferme" de la fenêtre principale et un "finprogramme" ?

Qu'est ce que la seconde fonction fait de plus ?

Merci

A+