DÉTECTER UNE INSTANCE PRÉCÉDENTE DE MON APPLICATION
cs_retorik
Messages postés10Date d'inscriptionmardi 17 décembre 2002StatutMembreDernière intervention31 janvier 2008
-
4 janv. 2008 à 09:22
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
1 mars 2009 à 21:56
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 1 mars 2009 à 21:56
Rohh : la honte
Merci
ghuysmans99
Messages postés2496Date d'inscriptionjeudi 14 juillet 2005StatutContributeurDernière intervention 5 juin 20161 1 mars 2009 à 16:26
"la détextion" : Ce ne serait pas plutôt "la détection" ?
Sinon pour le code 10/10.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 9 janv. 2008 à 01:00
Mais de rien, Dok, on est là pour partager !
doktorrelais
Messages postés4Date d'inscriptionjeudi 22 février 2007StatutMembreDernière intervention29 juillet 2013 9 janv. 2008 à 00:24
Ton analyse est parfaite concernant la DB et je suis d'accord avec toi.
En fait, je constate qu'on suit le même raisonnement, car tu distingues
entre le test compilé-compilé et le test création-compilé.
Ce dernier cas, il est vrai que je ne l'utilise pratiquement jamais car
lorsqu'il s'agit de tester des modifications, je pratique par modules
indépendants avant de compiler et le test final a toujours lieu en mode
compilé. Donc, ton approche par recherche de classe est le seul qui
permet le test entre mode création et mode compilé... il se peut que j'ai
un jour besoin de cette fonction et je t'en remercie, bravo.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 8 janv. 2008 à 15:49
Oui, je suis d'accord sur l'organisation, sauf que, quand un serveur est en écoute sur un port TCP, c'est difficile de tester sans se connecter, mais tu as raison concernant la DB, ça oblige à changer le paramétrage, mais c'est préférable ... sauf si on acquiert des données en mode "test" et qu'on ne veut pas les perdre.
Chaquee application a sa spécificité.
Concernant le code, on s'est mal compris et il n'y a pas raison à polémique :
App.PrevInstance détectera une autre application compilée que si elle même est compilée. Ce test ne fonctionne pas entre une application en mode création et une autre - la même à quelques détails près - compilée.
Je pense qu'un mélange des deux peut être une bonne solution :
PrevInstance : de mode compilé qui surveille mode compilé.
La recherche de classe : de mode création ou mode compilé qui surveille mode compilé.
Vala
doktorrelais
Messages postés4Date d'inscriptionjeudi 22 février 2007StatutMembreDernière intervention29 juillet 2013 8 janv. 2008 à 13:39
Je suis ennuyé de devoir répondre à Jack qu'il s'agit bien d'un
listing d'une version compilée que mon exemple décrit et qui referme
immédiatement la "nouvelle" instance dès son chargement en mémoire
grâce à l'instruction "End" qui se trouve dans le test du App.Previnstance.
Quant à moi, lorsque je veux améliorer une appli déjà en service sur le
même poste ou sur un poste partagé sur réseau, je le renomme et je le place
dans un autre dossier ainsi que tous les liens utiles pour le développement,
quitte à faire une copie dynamique préliminaire d'une base de données si c'est nécessaire, tandis que l'appli active reste confinée dans son
environnement propre. Cette façon de faire m'oblige à cerner correctement
tous les liens entre mon appli et le reste de ce qui tourne sur le PC et
ne peut que rendre l'appli plus stable en final.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 7 janv. 2008 à 20:07
Salut Doktorrelais
Oui, c'est l'utilisation standard de App.PrevInstance, mais cette technique ne permettra pas de détecter si une version compilée tourne déjà.
Pour ma part, je développais sur la même machine que celle sur laquelle tournait mon application (serveur de documentation). Je devais donc faire attention à ne pas avoir deux applis qui tournent en même temps (la vieille version compilée qui tourne 24h/24, et la version en développement), sinon cela me posait des problèmes (crash) de connexion à la DB + gestion du mode serveur IP.
Voilà pourquoi je m'étais préoccupé de retrouver l'appli sous forme compilée.
doktorrelais
Messages postés4Date d'inscriptionjeudi 22 février 2007StatutMembreDernière intervention29 juillet 2013 7 janv. 2008 à 16:07
Bien vu pour tester si une appli connue est déjà active, mais pour
tester si l'application courante l'est déjà, il y a plus simple en VB6
compilé, par exemple dans Form_load d'une de mes démos...
Juste le test App.prevInstance suffit pour informer que l'appli
est déjà active et éviter de la charger plusieurs fois.
(PS les lignes qui suivent le test ne concernent que la mise
en place de l'appli au lancement..)
Private Sub Form_Load()
If App.PrevInstance Then
MsgBox "Cette démo est déjà active !", , "Démo TRANE"
End
End If
Width = 12165
Height = 7380
Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2
Start = False
Init
End Sub
cs_retorik
Messages postés10Date d'inscriptionmardi 17 décembre 2002StatutMembreDernière intervention31 janvier 2008 4 janv. 2008 à 09:22
1 mars 2009 à 21:56
Merci
1 mars 2009 à 16:26
Sinon pour le code 10/10.
9 janv. 2008 à 01:00
9 janv. 2008 à 00:24
En fait, je constate qu'on suit le même raisonnement, car tu distingues
entre le test compilé-compilé et le test création-compilé.
Ce dernier cas, il est vrai que je ne l'utilise pratiquement jamais car
lorsqu'il s'agit de tester des modifications, je pratique par modules
indépendants avant de compiler et le test final a toujours lieu en mode
compilé. Donc, ton approche par recherche de classe est le seul qui
permet le test entre mode création et mode compilé... il se peut que j'ai
un jour besoin de cette fonction et je t'en remercie, bravo.
8 janv. 2008 à 15:49
Chaquee application a sa spécificité.
Concernant le code, on s'est mal compris et il n'y a pas raison à polémique :
App.PrevInstance détectera une autre application compilée que si elle même est compilée. Ce test ne fonctionne pas entre une application en mode création et une autre - la même à quelques détails près - compilée.
Je pense qu'un mélange des deux peut être une bonne solution :
PrevInstance : de mode compilé qui surveille mode compilé.
La recherche de classe : de mode création ou mode compilé qui surveille mode compilé.
Vala
8 janv. 2008 à 13:39
listing d'une version compilée que mon exemple décrit et qui referme
immédiatement la "nouvelle" instance dès son chargement en mémoire
grâce à l'instruction "End" qui se trouve dans le test du App.Previnstance.
Quant à moi, lorsque je veux améliorer une appli déjà en service sur le
même poste ou sur un poste partagé sur réseau, je le renomme et je le place
dans un autre dossier ainsi que tous les liens utiles pour le développement,
quitte à faire une copie dynamique préliminaire d'une base de données si c'est nécessaire, tandis que l'appli active reste confinée dans son
environnement propre. Cette façon de faire m'oblige à cerner correctement
tous les liens entre mon appli et le reste de ce qui tourne sur le PC et
ne peut que rendre l'appli plus stable en final.
7 janv. 2008 à 20:07
Oui, c'est l'utilisation standard de App.PrevInstance, mais cette technique ne permettra pas de détecter si une version compilée tourne déjà.
Pour ma part, je développais sur la même machine que celle sur laquelle tournait mon application (serveur de documentation). Je devais donc faire attention à ne pas avoir deux applis qui tournent en même temps (la vieille version compilée qui tourne 24h/24, et la version en développement), sinon cela me posait des problèmes (crash) de connexion à la DB + gestion du mode serveur IP.
Voilà pourquoi je m'étais préoccupé de retrouver l'appli sous forme compilée.
7 janv. 2008 à 16:07
tester si l'application courante l'est déjà, il y a plus simple en VB6
compilé, par exemple dans Form_load d'une de mes démos...
Juste le test App.prevInstance suffit pour informer que l'appli
est déjà active et éviter de la charger plusieurs fois.
(PS les lignes qui suivent le test ne concernent que la mise
en place de l'appli au lancement..)
Private Sub Form_Load()
If App.PrevInstance Then
MsgBox "Cette démo est déjà active !", , "Démo TRANE"
End
End If
Width = 12165
Height = 7380
Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2
Start = False
Init
End Sub
4 janv. 2008 à 09:22