bonjour à tous,
object.PrevInstance
Renvoie une valeur indiquant si une instance antérieure d'une
application est déjà en cours d'exécution.
comment feriez-vous cela sans utiliser PrevInstance ?
merci d'avance.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
François Picalausa
Hello,
Sans utiliser celà, on peut employer une entrée de la base de registre ou un fichier... MAIS ce n'est pas une méthode appropriée bien qu'elle soit facile et il faut gérer le cas ou l'appli planterait sans effacer l'entrée... On peut aussi énumérer les process comme dans: http://support.microsoft.com/default.aspx?kbid2986 MAIS si l'exe est renommé, on ne pourra pas le retrouver (à moins de lire l'exe, de générer et comparer un hash, ce qui prendrait beaucoup de temps de traitement). Reste la solution plus appropriée du mutex ou du pipê, si l'application doit communiquer. je te conseille à ce sujet le post de Zoury: http://groups.google.com/groups?selm=eq%24UQEwTEHA.3332%40TK2MSFTNGP12.phx.gbl
-- François Picalausa (MVP VB) http://faq.vb.free.fr --- http://msdn.microsoft.com http://apisvb.europe.webmatrixhosting.net
"Bul" a écrit dans le message de news:%
bonjour à tous, object.PrevInstance Renvoie une valeur indiquant si une instance antérieure d'une application est déjà en cours d'exécution. comment feriez-vous cela sans utiliser PrevInstance ? merci d'avance.
Hello,
Sans utiliser celà, on peut employer une entrée de la base de registre ou un
fichier...
MAIS ce n'est pas une méthode appropriée bien qu'elle soit facile et il faut
gérer le cas ou l'appli planterait sans effacer l'entrée...
On peut aussi énumérer les process comme dans:
http://support.microsoft.com/default.aspx?kbid2986
MAIS si l'exe est renommé, on ne pourra pas le retrouver (à moins de lire
l'exe, de générer et comparer un hash, ce qui prendrait beaucoup de temps de
traitement).
Reste la solution plus appropriée du mutex ou du pipê, si l'application doit
communiquer.
je te conseille à ce sujet le post de Zoury:
http://groups.google.com/groups?selm=eq%24UQEwTEHA.3332%40TK2MSFTNGP12.phx.gbl
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
"Bul" <marcel.bultez@spamtiscali.fr> a écrit dans le message de
news:%23NC3LBGUEHA.4064@TK2MSFTNGP11.phx.gbl
bonjour à tous,
object.PrevInstance
Renvoie une valeur indiquant si une instance antérieure d'une
application est déjà en cours d'exécution.
comment feriez-vous cela sans utiliser PrevInstance ?
merci d'avance.
Sans utiliser celà, on peut employer une entrée de la base de registre ou un fichier... MAIS ce n'est pas une méthode appropriée bien qu'elle soit facile et il faut gérer le cas ou l'appli planterait sans effacer l'entrée... On peut aussi énumérer les process comme dans: http://support.microsoft.com/default.aspx?kbid2986 MAIS si l'exe est renommé, on ne pourra pas le retrouver (à moins de lire l'exe, de générer et comparer un hash, ce qui prendrait beaucoup de temps de traitement). Reste la solution plus appropriée du mutex ou du pipê, si l'application doit communiquer. je te conseille à ce sujet le post de Zoury: http://groups.google.com/groups?selm=eq%24UQEwTEHA.3332%40TK2MSFTNGP12.phx.gbl
-- François Picalausa (MVP VB) http://faq.vb.free.fr --- http://msdn.microsoft.com http://apisvb.europe.webmatrixhosting.net
"Bul" a écrit dans le message de news:%
bonjour à tous, object.PrevInstance Renvoie une valeur indiquant si une instance antérieure d'une application est déjà en cours d'exécution. comment feriez-vous cela sans utiliser PrevInstance ? merci d'avance.
Bul
merci à vous, je regarde donc mutex et si j'ai des soucis je reviens vous voir. @+
merci à vous,
je regarde donc mutex et si j'ai
des soucis je reviens vous voir.
@+
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/ http://apisvb.europe.webmatrixhosting.net/
Bul a écrit :
bonjour à tous, object.PrevInstance Renvoie une valeur indiquant si une instance antérieure d'une application est déjà en cours d'exécution. comment feriez-vous cela sans utiliser PrevInstance ? merci d'avance.
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/
Bul <marcel.bultez@spamtiscali.fr> a écrit :
bonjour à tous,
object.PrevInstance
Renvoie une valeur indiquant si une instance antérieure d'une
application est déjà en cours d'exécution.
comment feriez-vous cela sans utiliser PrevInstance ?
merci d'avance.
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/ http://apisvb.europe.webmatrixhosting.net/
Bul a écrit :
bonjour à tous, object.PrevInstance Renvoie une valeur indiquant si une instance antérieure d'une application est déjà en cours d'exécution. comment feriez-vous cela sans utiliser PrevInstance ? merci d'avance.
Bul
grâce à vos conseils : Option Explicit Private Declare Function CreateMutex _ Lib "kernel32" Alias "CreateMutexA" _ (ByVal lpMutexAttributes As Long, _ ByVal bInitialOwner As Long, _ ByVal lpName As String) As Long Private Sub Form_Load() Dim retour As Long retour = CreateMutex(0, 1, VB.App.EXEName) MsgBox "LastDllError : " & Err.LastDllError End Sub encore une question : peut-on tester autre chose que Err.LastDllError ? [ GetLastError() lui retourne 0 ] "remerci" d'avance.
grâce à vos conseils :
Option Explicit
Private Declare Function CreateMutex _
Lib "kernel32" Alias "CreateMutexA" _
(ByVal lpMutexAttributes As Long, _
ByVal bInitialOwner As Long, _
ByVal lpName As String) As Long
Private Sub Form_Load()
Dim retour As Long
retour = CreateMutex(0, 1, VB.App.EXEName)
MsgBox "LastDllError : " & Err.LastDllError
End Sub
encore une question :
peut-on tester autre chose que Err.LastDllError ?
[ GetLastError() lui retourne 0 ]
"remerci" d'avance.
grâce à vos conseils : Option Explicit Private Declare Function CreateMutex _ Lib "kernel32" Alias "CreateMutexA" _ (ByVal lpMutexAttributes As Long, _ ByVal bInitialOwner As Long, _ ByVal lpName As String) As Long Private Sub Form_Load() Dim retour As Long retour = CreateMutex(0, 1, VB.App.EXEName) MsgBox "LastDllError : " & Err.LastDllError End Sub encore une question : peut-on tester autre chose que Err.LastDllError ? [ GetLastError() lui retourne 0 ] "remerci" d'avance.
François Picalausa
Hello,
Err.LastDllError correspond à GetLastError. En fait, quand VB appelle des API, il peut effectuer quelques appels intermédiaires qui seront (normalement) sans erreur. D'où le zéro. Donc, pour récupérer la "véritable" valeur, il faut tester Err.LastDllError.
-- François Picalausa (MVP VB) http://faq.vb.free.fr --- http://msdn.microsoft.com http://apisvb.europe.webmatrixhosting.net
"Bul" a écrit dans le message de news:
grâce à vos conseils : Option Explicit Private Declare Function CreateMutex _ Lib "kernel32" Alias "CreateMutexA" _ (ByVal lpMutexAttributes As Long, _ ByVal bInitialOwner As Long, _ ByVal lpName As String) As Long Private Sub Form_Load() Dim retour As Long retour = CreateMutex(0, 1, VB.App.EXEName) MsgBox "LastDllError : " & Err.LastDllError End Sub encore une question : peut-on tester autre chose que Err.LastDllError ? [ GetLastError() lui retourne 0 ] "remerci" d'avance.
Hello,
Err.LastDllError correspond à GetLastError.
En fait, quand VB appelle des API, il peut effectuer quelques appels
intermédiaires qui seront (normalement) sans erreur. D'où le zéro.
Donc, pour récupérer la "véritable" valeur, il faut tester Err.LastDllError.
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
"Bul" <marcel.bultez@spamtiscali.fr> a écrit dans le message de
news:etRse0GUEHA.2716@tk2msftngp13.phx.gbl
grâce à vos conseils :
Option Explicit
Private Declare Function CreateMutex _
Lib "kernel32" Alias "CreateMutexA" _
(ByVal lpMutexAttributes As Long, _
ByVal bInitialOwner As Long, _
ByVal lpName As String) As Long
Private Sub Form_Load()
Dim retour As Long
retour = CreateMutex(0, 1, VB.App.EXEName)
MsgBox "LastDllError : " & Err.LastDllError
End Sub
encore une question :
peut-on tester autre chose que Err.LastDllError ?
[ GetLastError() lui retourne 0 ]
"remerci" d'avance.
Err.LastDllError correspond à GetLastError. En fait, quand VB appelle des API, il peut effectuer quelques appels intermédiaires qui seront (normalement) sans erreur. D'où le zéro. Donc, pour récupérer la "véritable" valeur, il faut tester Err.LastDllError.
-- François Picalausa (MVP VB) http://faq.vb.free.fr --- http://msdn.microsoft.com http://apisvb.europe.webmatrixhosting.net
"Bul" a écrit dans le message de news:
grâce à vos conseils : Option Explicit Private Declare Function CreateMutex _ Lib "kernel32" Alias "CreateMutexA" _ (ByVal lpMutexAttributes As Long, _ ByVal bInitialOwner As Long, _ ByVal lpName As String) As Long Private Sub Form_Load() Dim retour As Long retour = CreateMutex(0, 1, VB.App.EXEName) MsgBox "LastDllError : " & Err.LastDllError End Sub encore une question : peut-on tester autre chose que Err.LastDllError ? [ GetLastError() lui retourne 0 ] "remerci" d'avance.
Bul
tout est clair et vrai (j'ai pu vérifier avec d'autres langages) merci beaucoup donc.
tout est clair et vrai
(j'ai pu vérifier avec d'autres langages)
merci beaucoup donc.