Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

OUVRIR DES DOCUMENTS DANS LA MÊME INSTANCE DE L'APPLICATION SANS RELANCEMENT DE L'EXE (DDE)


Information sur la source

Catégorie :OLE, DDE, Automation Niveau : Initié Date de création : 25/10/2004 Vu / téléchargé: 7 811 / 720

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note


Description

Ce code permet d'ouvrir, imprimer... un ou plusieurs documents dans la même instance d'une application ouverte (ou fermée).
Lorqu'une association de fichier paramètre l'utilisation de DDE, un message WM_DDE_INITIATE est envoyé à toutes les fenêtres au premier plan avec le nom de l'application visée par l'action... si une application répond par WM_DDE_ACK, le shell renvoie un message WM_DDE_EXECUTE avec l'action (et le nom de fichier) à accomplir.
Ainisi, en interceptant ces messages, on peut exécuter une action comme ouvrir un document dans un instance en cours d'une application sans relancement de l'exe et sans ligne de commande...de plus, cela permet d'ouvrir plusieurs fichiers à la fois sans lancer autant d'instance que de fichiers...
 

Conclusion

A noter qu'il ne faut pas utiliser de tableau dynamique (pour les paramètres de l'action) dans la procédure de fenêtre sous peine de faire planter le programme...
A noter aussi que cette méthode est officielle (mais pas surdocumentée) contrairement à d'autres...

Comme tout subclassing, cela peut planter...à chaque fois (erreur de programmation) ou comme Windows (une fois de temps en temps histoire de se faire remarquer)

Ce code ne comporte pas de bugs apparents à ma connaissance...

Ce code crée une association de fichier .XYZ et utilise cette extension pour DDE...

N'hésitez pas à commenter et à noter...
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de Renfield le 26/10/2004 11:27:01 administrateur CS

interessant.

signaler à un administrateur
Commentaire de azerty25 le 26/10/2004 19:35:07

Super ! En plus, j'avai posé la question il y a peu de temps sur le forum sans vraiment chercher à le coder ! Merci :)

signaler à un administrateur
Commentaire de Ynot le 03/11/2004 19:16:25

Bravo 10/10 très interressant.
c'est bien codé, bien commenté.

Peut être réutiliser pour un grand nombre de prog.

Va servir a beaucoup de monde ici.

merci.

signaler à un administrateur
Commentaire de Labuzz le 11/04/2005 14:50:44

Desole mais je porte bien mon nick...

Comment ca marche ????

Merci

I.Labuzz

signaler à un administrateur
Commentaire de ShareVB le 12/04/2005 10:14:37

salut,

tu copies les deux fichiers essai.xyz et essai2.xyz quelquepart
tu compiles le projet
tu lances une fois l'exe
tu le fermes
tu doublecliques sur un des fichiers .xyz, ca ouvre le prog
tu doublecliques sur un autre fichier .xyz et là tu vois que ca fait comme pour un doc word...

ShareVB

signaler à un administrateur
Commentaire de yannd0307 le 23/10/2006 23:34:49

Bonjour,
Ce code source est vraiment génial. Je m'en sert pour le lecteur mp3 que je suis en train de créer mais j'ai deux problème :
1) Quand je double-clique sur UNE musique, mon programme se lance et le message d'erreur suivant apparait : "Windows ne trouve pas le fichier <nom de fichier>".

2) Comment supprimer le label "imprimer avec mon programme" ?
Cordialement.

signaler à un administrateur
Commentaire de ShareVB le 01/11/2006 12:34:48

salut,

euh d'abord, dsl pour le délai de réponse...

1) il faut relancer le programme manuellement (sans double cliquer sur un fichier) à chaque fois que l'on change l'exe de dossier...donc une première fois à l'installation...ou alors il faut faire un autre exe pour refaire l'association .MP3 <> ton prog...sinon est ce que ce que tu recois dans OnReceiveCommand est un nom de fichier complet et existant...en tout cas je n'arrive pas à avoir ce bug sur mon ordi...

2)tu supprimes simplement du Form_Load la commande FileAssociation qui contient "Imprimer"...

ShareVB

signaler à un administrateur
Commentaire de frederios le 06/11/2006 15:08:31

Salut merci pour la source mais une petite question

Serait-il possible de bypassé le module modAssociation.bas donc de juste signaler au programe qui roule dejas le nouveau data a ajouter dans le listbox???

Merci d'avance!!!

signaler à un administrateur
Commentaire de frederios le 06/11/2006 15:15:00

En gros je veux juste pas que le programe roule plus d'une instance mais en meme temp mon app envoie et recoie du data a chaque demarage...

en gros voila ce que je veux qui arrive...

-le programe demare
-Il verifie si il est la premiere instance
--si il est de premiere instance il reste en attente.
--sinon il envoie du data a son clone de premiere instance et ferme

ca devrais pas etre trop compliquer mais je trouve juste pas comment...

Si quelquun a une idee ca serais tres apprecier si tu la partageais..


Merci a l'avence

signaler à un administrateur
Commentaire de ShareVB le 06/11/2006 15:46:16

salut,

pour moi, entre ce que tu demandes et ce que fait déjà le code, il n'y a aucune différence :
-> le programme démarre avec ou sans fichier en arguments ou par double clic
-> à chaque double clic sur un fichier, ta première instance reçoit le nom du fichier

tu peux te passer de modAssociation.bas qui ne sert qu'à enregistrer l'association extension <-> ton appli...

si tu veux une seule instance, dans le Form_load tu mets un "If App.PrevInstance Then End" au début...

enfin : tu dis du "data" mais ca sera TOUJOURS et UNIQUEMENT des noms de fichiers...

ShareVB

signaler à un administrateur
Commentaire de frederios le 06/11/2006 16:36:17

non non cest pas pareil p[arce que le code si haut metionner ne fonctionne que si tu execute a partire de l'association avec un fichier...

moi ca a rien avoir avec le fais que je le part apartire d'un fichier(que ce soie xyz ou un n autre) si tu bypass le module d'association ca marche juste pus... le dde se fais entre ton premiere instace du app et le shell lui meme(donc ca passe pas par une deuxieme instance...

moi je veux qu'un deuxime instance communique avec la premiere...

merci quand meme j'espere que tu comprend ce que je cveux dire...

signaler à un administrateur
Commentaire de ShareVB le 06/01/2007 22:06:42

version .net disponible à http://www.vbfrance.com/code.aspx?ID=41008

ShareVB

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.