Programme déja ouvert

cs_gronon2 Messages postés 43 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 16 septembre 2005 - 14 sept. 2005 à 01:05
cs_gronon2 Messages postés 43 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 16 septembre 2005 - 15 sept. 2005 à 05:01
j'ai 2 programmes en VB6

prog1 et prog2

je lance prog1.exe
ensuite je lance prog2.exe
À son ouverture prog2.exe doit vérifier si prog1.exe est "ouvert"
si oui il m'envoie une réponse (message)

Comment fait-on cela

Gronon2

9 réponses

P__ROMEO Messages postés 294 Date d'inscription vendredi 25 février 2005 Statut Membre Dernière intervention 9 mars 2006 1
14 sept. 2005 à 02:29
<TD id=HB_Focus_Element vAlign=top width=\"100%\" background=\"\" height=250 body UNSELECTAB<>Je n'ai pas la fonction qui verifi si un programme est ouvert ou pas. mais, si ca peut te dépanner
jusqu'a ce que tu trouve la fonction, pour quoi ne pas faire en sorte que programme1 cré un
fichier texte du non que tu veux, dans le répertoire que tu veux (assez camouflé) et qui sera suprimer toujours par programme1 à sa fermeture, ainsi, programme2 n'aura qu'a verrifier si le fichier texte existe.
ca fait 3 fonction aulieu d'une seul, mais, sa marche.

si j'ai ta fonction, je te fais signe. bonne chance
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
14 sept. 2005 à 03:17
Salut
Plusieurs solutions de toute façon avec les APIs :
- Si Prog1 possède une forme, il te suffit de rechercher le handle (identifiant unique) de cette forme en utilisant les APIs de recherche de handle par le texte du caption de cette forme
- Tu peux aussi rechercher le nom des exécutables en cours de run et l'identifier comme ça

Charge "api-guide" sur www.allapi.net qui est un utilitaire gratuit expliquant le paramétrage des APIs avec exemples en VB6.
Regarde les APIs comme FindWindow, GetWindowText ... et les autres dans la même catégorie.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
cs_gronon2 Messages postés 43 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 16 septembre 2005
14 sept. 2005 à 03:45
Assez ingénieux P-roméo
Mais si jamais prog1 "plante" sur un run time error alors il ne pourra éliminer le dit fichier....trop dangereux
'Merci Jack.....je fouille

Gronon2
0
P__ROMEO Messages postés 294 Date d'inscription vendredi 25 février 2005 Statut Membre Dernière intervention 9 mars 2006 1
14 sept. 2005 à 04:27
Ma solution ne devait etre de toute facons qu'un pneu de secour, jusqu'a ce que l'on trouve un bon. et, jack, je verrai aussi ton site. merci.
aussi, tu pouvais en cas d'erreur mettre au debut:
OnError goto suprimer
.....
....

exit sub

suprimer:
fonction qui suprime ton fichier, et qui le programme sans trops salire ' si je me trompe, faitent signe.
end sub


<TD id=HB_Focus_Element vAlign=top width="100%" background="" height=250 UNSELECTAB< body>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
14 sept. 2005 à 05:26
Salut Gronon2,


Tu peux adapter ce code qui check si une instance d'une appli est déjà lancée :




Private Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ByVal lpClassName As String, ByVal lpWindowName As String) As Long

' Instance Code
Private Const InstanceCode = "A8F500EA:D54F:210F:ED0A:F4A5A20C038B"

Public Function PrevInstance() As Boolean

If FindWindow(vbNullString, ByVal InstanceCode) Then
PrevInstance = True
Exit Function
End If

CreateWindowEx 0&, "STATIC", InstanceCode, 0&, 0&, 0&, 0&, 0&, 0&, 0&, App.hInstance, 0&
PrevInstance = False

End Function







++

Zlub
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
14 sept. 2005 à 07:47
ZLub, tu n'utilse tout de même pas le code que tu as fournis.....
en VB, tu as tout simplement :
app.PrevInstance
qui indique si une version d'un Exe tourne....

pour le probleme evoqué ici, un FindWindow est de mise ici

Amusez-vous !
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS - MVP Visual Basic
0
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
14 sept. 2005 à 10:43
Salut,

non j'avoue, j'utilise pas ... Il s'agit d'un vieux code qui trainé sur mon PC...

++

Zlub
0
Doro81079 Messages postés 380 Date d'inscription vendredi 22 avril 2005 Statut Membre Dernière intervention 24 février 2015 56
15 sept. 2005 à 04:01
bonsoir,



donc pour compléter le post de renfield...

tu mets ce code dans le form load de la 1ère form chargée de ton appli :

If App.PrevInstance = True Then

MsgBox "Programme déjà ouvert !"

Unload Me

End If

ce qui t'évite de créer une seconde appli...

salut
doro
0
cs_gronon2 Messages postés 43 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 16 septembre 2005
15 sept. 2005 à 05:01
Je vais être plus précis dans ma demande

prog1.exe fait des calculs de mensualités pour des prêts sur achat d'automobiles

prog2.exe fait des mises à jour du prog1.exe

lorsque je lance prog2.exe, celui-ci doit vérifier si prog1.exe est "ouvert" car comme vous le savez il est impossible d'écrasé un fichier lorsque celui-ci est "ouvert" en mémoire

comment dois-je utiliser "App.PrevInstance " dans prog2.exe pour faire cette vérification sur prog1.exe

Gronon2
0
Rejoignez-nous