Ligne de commande sur un programme ouvert

Résolu
cs_windob Messages postés 225 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 25 août 2008 - 2 sept. 2004 à 17:49
cs_windob Messages postés 225 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 25 août 2008 - 3 sept. 2004 à 22:30
salut,

comment je pourrait faire pour que un type de fichier appele une ligne de commande sur mon appli qui est déja ouverte sans en ouvrir une deuxieme ???

merci, j'esper ke qq1 a compris
--------------------------------------------------------------------

l'avenir appartient a ceux ki program tot ;) ;)

17 réponses

Ze_Dam Messages postés 340 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 7 juillet 2005
3 sept. 2004 à 19:47
donc je vais refaire une récapitulation. L'exe qui est déjà charger depuis 15 min va être appelé A. L'autre qui est lancer au blclick du fichier et qui est donc le 2ème processus et donc en trop, sera B.

On dbclick, l'exe B est lancé, avec App.PrevInstance au début du Form_Load(), il voit qu'un processus similaire (A) est déjà lancer. Donc B va se décharger, mais juste avant, il enregistre la destination du fichier dblclické, ce qui va permettre à A de pouvoir le recueillir. C'est sauvegardé, B se décharge.

De l'autre côté, A, toutes les 1/2 sec, vérifie s'il y a une nouvelle donnée sauvegardé. Si c la donnée par défaut qui est détectée (<o>) alors pas de fichier dblclické. Sinon, il le récupère dans Résultat, et il remet dans la sauvegarde le paramètre par défaut <o>. S'il le fait pas, ben toutes les 1/2 sec il y vera une donnée non égale à <o>.

Je ne pense pas que la vérification en mémoire de la donnée doit être très lourd .......
3
Ze_Dam Messages postés 340 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 7 juillet 2005
2 sept. 2004 à 17:59
si cette apli est déjà ouverte quand on clique sur le type de fichier en question ?
0
cs_windob Messages postés 225 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 25 août 2008
2 sept. 2004 à 18:04
oui, mais je ne veut pas ouvrir une autre instantce de mon appli.
--------------------------------------------------------------------

l'avenir appartient a ceux ki program tot ;) ;)
0
Ze_Dam Messages postés 340 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 7 juillet 2005
2 sept. 2004 à 18:07
ca j'avais compris. Donc dans le Form_Load de ton appli, en premier, tu met :

If App.PrevInstance Then End


voilà dis-moi si ca te convient
0

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

Posez votre question
cs_windob Messages postés 225 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 25 août 2008
2 sept. 2004 à 19:05
oui mais je ne recupere pas la ligne de commande
ça m'aide juste a fermer la 2e instance a l'ouvrture mais il faudrait que l'appli appelée meme si elle est déja ouverte reçoive la ligne de commmande mais ne s'ouvre pas une deuxième fois
--------------------------------------------------------------------

l'avenir appartient a ceux ki program tot ;) ;)
0
Ze_Dam Messages postés 340 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 7 juillet 2005
2 sept. 2004 à 19:08
oui mais explique moi en détail ta "ligne de commande"
0
cs_windob Messages postés 225 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 25 août 2008
2 sept. 2004 à 19:23
bin dans le registre quand tu definit un type de fichier pour une extension, et qu'ensuite tu met tes clé Shell\Open\Command"...,
tu entre la ligne de commande ( une phrase qui contient le chemin de l'appli a appeler et généralement une variable "%1" qui se remplace lors du doubleclik sur un fichier par le nom du fichier.

donc si l'appli appelée est un exe VB on peu la recuperer dans le code par la variable Command dans Sub Main, qui t'indique le fichier qui a été doublecliké.

donc c'est cette ligne de commade que je voudrais récuperer mais sans ouvrir une nouvele instance de l'appli ?
j'espere que ça repond a ta question
--------------------------------------------------------------------

l'avenir appartient a ceux ki program tot ;) ;)
0
Ze_Dam Messages postés 340 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 7 juillet 2005
2 sept. 2004 à 19:34
donc si je comprend bien qd l'application n'est pas ouverte eh ben si on clique sur le fichier avec l'extansion ben ca ouvre le prog.

Mais si ce prog est déjà ouvert et qu'on clique si le fichier avec l'extansion tu voudrais que ce soit l'appli qui est donc ouverte qui se charge du fichier et non pas une nouvelle appli .... c ca ?
0
cs_windob Messages postés 225 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 25 août 2008
2 sept. 2004 à 22:33
exactement !
--------------------------------------------------------------------

l'avenir appartient a ceux ki program tot ;) ;)
0
Ze_Dam Messages postés 340 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 7 juillet 2005
3 sept. 2004 à 16:46
ok c déjà une bonne base si tout est clair. En théorie, lorsque l'on ouvre le fichier avec l'extansion en question, et que lorsque le programme est déjà ouvert, il faudrais que :

If App.PrevInstance = True Then
'On fait passer l'info au prog déjà ouvert (C: ...) pour qu'il puisse l'ouvrir
Else
'si le prog n'était pas ouvert, ben alors il va ouvrir le fichier, naturellement quoi
End If

donc pour résumé, si App.PrevInstance = True, on doit passer la destination du fichier ouvert au prog pour qu'il puisse ouvrir le fichier donc.

bon je pense tout de suite à un moyen "barbare" de le faire, c'est de l'inscrire qq part (à savoir dans la base de registre ou un fichier). Ainsi, le prog exe qui est donc déjà ouvert pourra récupérer la destination du fichier et le prendre en charge.

bon je vais un coup réfléchir à un meilleur moyen de le faire
0
cs_windob Messages postés 225 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 25 août 2008
3 sept. 2004 à 17:40
merci du conseil, j'avais effectivement pensé au moyen bourin mais je me demandais si il n'en avait pas de meilleur

--------------------------------------------------------------------

l'avenir appartient a ceux ki program tot ;) ;)
0
Ze_Dam Messages postés 340 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 7 juillet 2005
3 sept. 2004 à 18:30
J'ai fait quelques recherches et voilà ce que je te propose :

Private Sub Form_Load()
Dim Chemin As String
Dim Résultat As String


là on enregistre si il faut transmettre le fichier à l'autre exe déjà ouvert

Chemin est la destination du fichier, si c'est bien le cas

If App.PrevInstance = True Then
SaveSetting App.Title, "Settings", "Chemin", Chemin
End
End If


On regarde si il y a qq chose de sauvegardé, par défaut, <o> signifiera qu'il y a rien et que donc c un chargement normal.

Private Sub Timer_Timer()
If GetSetting(App.Title, "Settings", "Chemin", "<o>") <> "<o>" Then
Résultat = GetSetting(App.Title, "Settings", "Chemin", "<o>") 
SaveSetting App.Title, "Settings", "Chemin", "<o>"
End If
End Sub


voilà le code. si le l'exe est déjà chargé, il enregistre les infos. L'exe de base, lui, regarde à intervalle régulier (avec le timer), si de nouvelles infos ont été enregistrées.

bon c'est aussi nouveau pour moi donc j'ai fait mon possible, je n'est pas non plus regarder si mon odée fonctionnait, car je devrais créer une extansion dans regedit, etc, trop de travail alors que tu peux le tester rapidement vu que t'a déjà fait la commande dans regedit. Il doit aussi y avoir moyen d'amliorer mon code. Mais bon, regarde d'aord si ca marche, on améliorera après .... ;)
0
Ze_Dam Messages postés 340 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 7 juillet 2005
3 sept. 2004 à 18:33
donc le chemin du fichier ouvert se met dans Résultat et ser interceptée par le programme précédemment chargé, si c le cas. Avec cette variable, ben tu pourras charger le fichier qui a donc été ouvert.
0
cs_windob Messages postés 225 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 25 août 2008
3 sept. 2004 à 18:59
merci, je vais voir mais le probleme c'est le tps parceque ouvrir un fichier tous les 500 ms par ex, c'est bcp

--------------------------------------------------------------------

l'avenir appartient a ceux ki program tot ;) ;)
0
Ze_Dam Messages postés 340 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 7 juillet 2005
3 sept. 2004 à 19:06
il n'ouvre pas un fichier toutes les 1/2 sec, il regarde s'il y a une nouvelle donnée sauvegardée. Si oui, alors il ouvre le fichier.
0
cs_windob Messages postés 225 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 25 août 2008
3 sept. 2004 à 22:21
autant pr moi j'avais pas compris, merci je vais essayer

--------------------------------------------------------------------

l'avenir appartient a ceux ki program tot ;) ;)
0
cs_windob Messages postés 225 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 25 août 2008
3 sept. 2004 à 22:30
merci, tres bonne idée, ça marche tres bien
--------------------------------------------------------------------

l'avenir appartient a ceux ki program tot ;) ;)
0
Rejoignez-nous