Intercepter une URL - C#/.NET managed - Programmation
Marsh Posté le 13-05-2005 à 17:35:42
Personne ne sait ouvrir faire ouvrir un fichier à une application déjà lancée simplement double cliquant sur le fichier en question ?
Marsh Posté le 18-05-2005 à 20:41:21
Apparamment avant ça se faisait avec DDE.
Mais DDE n'est pas intégré dans .Net et MS recommande de ne plus l'utiliser.
Comment faire alors pour ouvrir un fichier (depuis l'explorateur) dans un programme déjà lancé ?
Marsh Posté le 18-05-2005 à 23:48:33
warzouz a écrit : Point 2 : Passer l'URL à l'application active et non une nouvelle instance. |
Faut faire de l'IPC. Bcp de possibilités :
- sockets
- messages windows (WM_COPYDATA...)
- pipe nomé
- file mapping
...
http://msdn.microsoft.com/library/ [...] ations.asp
Je te déconseille DDE, ça commence à dater.
http://www.codeproject.com/aspnet/AspxProtocol.asp
Marsh Posté le 19-05-2005 à 09:46:27
Merci pour ta réponse, DDE commence à dater, mais le shell intègre en standard cette technique pour lancer les applications.
La solution que j'ai trouvé pour l'instant, c'est de lancer un STUB (programme interface) qui récupère le paramètre et le passe au programme (actif) qui va réellement gerer ce paramètre. Puis le Stub se coupe.
C'est ça le principe de ce que tu conseilles ?
Pour info IE fait du DDE, FireFox fait du DDE, Word fait du DDE, XmlSpy fait du DDE
HelloWorld a écrit : Faut faire de l'IPC. Bcp de possibilités : |
Marsh Posté le 19-05-2005 à 11:20:36
A mon avis tu cherches la complication. Stub, DDE, ... si j'ai bien compris ton problème, c'est tout con, c'est comme quand [winamp|mdedia player|...] tourne déjà et qu'une 2° instance est lancée suite à un clique sur un mp3 , cette 2° instance s'en rend compte qu'elle est la 2°, signale à la 1° de jouer un autre mp3 et se termine.
DDE c'est surdimensionné pour ce besoin. Un simple message fait l'affaire.
http://www.vbaccelerator.com/home/ [...] rticle.asp
DDE n'est qu'une version plus élaborée de ce principe.
Mais bon si tu veux faire du DDE, fais du DDE.
Marsh Posté le 13-05-2005 à 13:13:51
Bonjour,
J'essaye de faire un programme, j'ai déjà le gros des éléments, mais je bloque sur un point.
Voici ce que je veux faire.
Dans un navigateur, l'utilisateur clique sur une URL avec un protocole spécial (ex : monprot://www.monsite.com/fichier.zip|AutresParam )
Je voudrait lancer une appli quil vas s'occuper du téléchargement du fichier et effectuer des opérations d'installation.
Point 1 : Intercepter l'URL
Ca, j'ai trouvé dans la base de registre où associer le protocole et la commande shell à lancer
Point 2 : Passer l'URL à l'application active et non une nouvelle instance.
Si dans la commande j'ai "monprog.exe" "%1", ça va lancer une nouvelle instance de mon prog.
La question est : Comment faire pour que ça soit l'instance active qui traite l'opération (en fait récupérer l'URL et après elle se débrouille) et non une nouvelle instance.
Ca doit être assez simple puisque pleins de programmes le font, 'mais j'arrive par à trouver de code en VB.Net, ni en VB d'ailleurs.
PS : mon prog détecte déjà qu'il y a une autre instance qui tourne et refuse alors de se lancer.
Merci d'avance pour votre aide.
---------------
Le but de l'homme moderne sur cette terre est à l'évidence de s'agiter sans réfléchir dans tous les sens, afin de pouvoir dire fièrement, à l'heure de sa mort : "Je n'ai pas perdu mon temps." - Pierre Desproges