App.PrevInstance, comment chat marche ???

Le
LE TROLL
Bonjour,

Je fais un truc qui ne fonctionne pas :

Sub Command4_Click() ' calendrier
Dim x
If App.PrevInstance Then Exit Sub
If Form1.eval = False Then x = Shell("calendrier.exe ", 1)

A quoi lie-t-on App.PrevInstance pour qu'il soit opérationnel ???

--
Merci beaucoup, au revoir et à bientôt :o)

Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
LE TROLL
Le #16743061
RESOLU, j'ai trouvé, faut mettre dans l'appelé :o)

--
Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"LE TROLL" %23EqGc$
| Bonjour,
|
| Je fais un truc qui ne fonctionne pas :
|
| Sub Command4_Click() ' calendrier
| Dim x
| If App.PrevInstance Then Exit Sub
| If Form1.eval = False Then x = Shell("calendrier.exe ", 1)
|
| A quoi lie-t-on App.PrevInstance pour qu'il soit opérationnel ???
|
| --
| Merci beaucoup, au revoir et à bientôt :o)
| ------
| Romans, logiciels, email, site personnel
| http://irolog.free.fr/joe.htm
| ------------------------------------------------------------------------------------
|
|
Jean-marc
Le #16743651
LE TROLL wrote:
RESOLU, j'ai trouvé, faut mettre dans l'appelé :o)



Hello,

A toutes fins utiles,je signale la présence dans la FAQ d'un article
expliquant tout cela, ainsi que l'existence de moyens alternatifs
à mettre en oeuvre an fonction des besoins:

http://faq.vb.free.fr/index.php?questionF

Bon WE,

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Sebastien
Le #16752221
> Hello,

A toutes fins utiles,je signale la présence dans la FAQ d'un article
expliquant tout cela, ainsi que l'existence de moyens alternatifs
à mettre en oeuvre an fonction des besoins:

http://faq.vb.free.fr/index.php?questionF





Salut,

J'ai consulté ton lien, perso pour le pevInstance j'utilise
CreateFileMapping
pour créer un fichier mappé en mémoire, avec le nom de l'appli! pas le
chemin!
ainsi si l'exe est exécuté depuis un autre endroit je le détecte sans
problèmes.
De plus la mise en place est beaucoup plus aisée et on peut y mettre des
tonnes de données de "sessions en cours"

Voir http://msdn.microsoft.com/en-us/library/aa366537(VS.85).aspx

++
Sebastien
Le #16752211
oup's lu et ecris trop vite...
pour le chemin je voulais dire le nom, dans ton exemple de mutex si
l'utilisateur change le nom de ton exe tu n'y vois que du feu...

++
jean-marc
Le #16753101
"Sebastien" news:
oup's lu et ecris trop vite...



Hello,

pour le chemin je voulais dire le nom, dans ton exemple de mutex si
l'utilisateur change le nom de ton exe tu n'y vois que du feu...



Oui et non. Techniquement, oui bien sur. Si on crée 2 exe avec 2 noms
différents à partir de l'exe original, on va effectivement tromper
le mutex et on pourra lancer 2 fois. C'est un fait.

Mais ce n'est pas le but de l'article de présenter une méthode
permettant d'éviter ce genre de "hacking".

On parle ici d'usage normal.

Ceci dit, si on veut une garantie d'unicité, il suffit de créer
le mutex en utilisant en lieu et place du nom de l'exe un GUID,
par exemple.

Ceci n'enlève rien au mérite de l'emploi du fileMapping :-)

Cordialement,

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Sebastien
Le #16753681
>Oui et non. Techniquement, oui bien sur. Si on crée 2 exe avec 2 noms
différents à partir de l'exe original, on va effectivement tromper
le mutex et on pourra lancer 2 fois. C'est un fait.



Mais ce n'est pas le but de l'article de présenter une méthode
permettant d'éviter ce genre de "hacking".



Eh bah je parlais pas de "haking" ceci peut etre fait de maniere "anodine"
par l'utilisateur...

Si on veut gerer le nombre d'instance, il y a souvent une bonne raison donc
je trouve ca un peu dommage de ne pas prendre en compte un eventuel
renomage...

Je ne parle pas du debat FileMapping ou mutex car dans les 2 cas il suffit
de mettre le nom de l'appli en "dur" et le tour est joué

Je prefere le FileMapping pour des tas de raisons, mais ce qui me gene c'est
pas le mutex c'est le app.exename...

++
jean-marc
Le #16754901
"Sebastien" news:

Je prefere le FileMapping pour des tas de raisons, mais ce qui me gene
c'est pas le mutex c'est le app.exename...



Je pense que tu as raison sur le fond. Lors de la prochaine
release de la FAQ, nous mettrons à jour l'article pour signaler
ça et indiquer une alternative possible (nom en dur ou GUID, ce
dernier étant plus safe car on a alors une garantie d'unicité).

Merci en tout cas du feedback, qui nous aide à améliorer
la qualité de notre FAQ.

Cordialement,

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
LE TROLL
Le #16754891
Me concernant (auteur de la question), un logiciel est livré, après si
l'utilisateur en fait une tondeuse à gazon, ce n'est plus le problème de
l'auteur, pas pareil qu'en entreprise donc...

Et pour app.PrevInstance, ben en fait ce n'était pas suffisant, car, ouvrant
le programme avec le groupe d'API qui permettent aussi de fermer le
programme ouvert (je n'ai plus le nom en tête), ben si jamais avec le bouton
on tentait d'ouvrir plusieurs fois le programme, bien qu'ouvert une seule
fois grâce à PrevInstance, néanmoins l'API n'arrivait plus à fermer le
programme qu'elle avait ouvert. Comme quoi, même avec PrevInstance, ça doit
laisser des traces quelques part de tenter plusieurs ouvertures, ou
perturber...
Alors j'ai eu sa peau par la méthode agricole, laissant le PrevInstance de
l'appelé, dans l'appelant je lui ai mis un bouton qui fait alternat, de
facto, le programme ne peut être sollicité qu'une fois... Et là, le groupe
d'API le ferme bien :o)

------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Sebastien"
| >Oui et non. Techniquement, oui bien sur. Si on crée 2 exe avec 2 noms
| >différents à partir de l'exe original, on va effectivement tromper
| >le mutex et on pourra lancer 2 fois. C'est un fait.
|
| >Mais ce n'est pas le but de l'article de présenter une méthode
| >permettant d'éviter ce genre de "hacking".
|
| Eh bah je parlais pas de "haking" ceci peut etre fait de maniere "anodine"
| par l'utilisateur...
|
| Si on veut gerer le nombre d'instance, il y a souvent une bonne raison
donc
| je trouve ca un peu dommage de ne pas prendre en compte un eventuel
| renomage...
|
| Je ne parle pas du debat FileMapping ou mutex car dans les 2 cas il suffit
| de mettre le nom de l'appli en "dur" et le tour est joué
|
| Je prefere le FileMapping pour des tas de raisons, mais ce qui me gene
c'est
| pas le mutex c'est le app.exename...
|
| ++
|
Publicité
Poster une réponse
Anonyme