|
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(
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(
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(
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(  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+
|
| |
| |
| | | |
|
| | | | |
| | |
|