Instance unique de votre application

Soyez le premier à donner votre avis sur cette source.

Vue 11 975 fois - Téléchargée 887 fois

Description

App.PrevInstance, oui, ok...

mais ca ne permet que de savoir si l'exe courant a été lancé ou non...
rien n'empeche de copier l'exe, et alors de le relancer en tout quiétude.

Je suis donc parti du principe général du code de BruNews
http://www.cppfrance.com/code.aspx?ID=25238

Source / Exemple :


Public Sub Main()
    '# NB : évitez d'appeler la fonction plus d'une fois durant l'execution du programme.
    '# ca n'est pas son but, et elle risque de consommer de la mémoire supplémentaire.
    '# un message d'erreur vous en avertira en mode IDE.
    If Not IsAlreadyRunning Then
        Form1.Show
    End If
End Sub

Conclusion :


Et en prime, l'instance précédente sera automatiquement activée...

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Renfield
Messages postés
17283
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
56 -
AppActivate ne saurait donc pas restaurer une application minimisée, mais uniquement celles qui seraient masquées par une autre fenêtre ?
Philippe734
Messages postés
309
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
15 juin 2015
-
J'utilise cette source dans plusieurs de mes programmes.

Alors, ok, je reformule.

L'objet de la source, est d'afficher une application déjà exécutée, si on exécute de nouveau le programme.

En principe, la ligne suivante, doit afficher l'application, si elle déjà exécutée :
AppActivate hPid

Dans la plupart des cas, ça fonctionne très bien.

Mais, parfois, pour une raison que j'ignore, au passage de la ligne, rien ne se passe. L'application déjà exécutée, ne s'affiche pas.

Alors, j'ai remplacé la ligne par l'usage de ces 3 API :
SetForegroundWindow hPid
ShowWindow hPid, SW_RESTORE
BringWindowToTop hPid

Alors dans ce cas, à chaque fois, l'application déjà exécutée est affichée.

Bon, tout ça pour informer les usager de cette source. Si leur programme n'est pas affichée - alors qu'il était déjà exécutée - ils peuvent donc utiliser ces 3 API.
:-)
Renfield
Messages postés
17283
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
56 -
j'ai pas compris ce post scriptum...
Philippe734
Messages postés
309
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
15 juin 2015
-
J'ai oublié de préciser que mon hFrm est le hPid de la source originale
Philippe734
Messages postés
309
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
15 juin 2015
-
Pour une raison que je ne comprend pas, la ligne suivante ne fonctionne pas tout le temps. Elle doit afficher l'application déjà ouverte.
AppActivate hPid

Comme je n'ai pas cherché la raison, je l'ai remplacé par :
SetForegroundWindow hFrm
ShowWindow hFrm, SW_RESTORE
BringWindowToTop hFrm

:-)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.