begin process at 2012 02 17 03:26:22
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

OLE, DDE, Automation

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

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


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :OLE, DDE, Automation Niveau :Initié Date de création :25/10/2004 Vu / téléchargé :8 616 / 786

Auteur : ShareVB

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (13)
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

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source .NET (Dotnet) CLONE/FORK DES FLUX DE LA CONSOLE : PERMETTRE LA REDIRECTION...
Source avec Zip Source .NET (Dotnet) DÉFRAGMENTER UN FICHIER
Source avec Zip Source .NET (Dotnet) ECRAN DE VEILLE : DÉTECTER LE LANCEMENT/DÉCLENCHER/EMPÊCHER
Source avec Zip Source .NET (Dotnet) AUTORUN : DÉTECTION DU LANCEMENT DE L'AUTORUN, DÉTECTION DU ...
Source avec Zip Source .NET (Dotnet) NSLOOKUP EN VB.NET OU COMMENT FAIRE UNE REQÛETE DNS EN PRÉCI...

 Sources de la même categorie

IMPORTATION DANS EXCEL DE DONNÉES D'UNE SOURCE AS400 (I5, IS... par Godzestla
Source avec Zip Source avec une capture Source .NET (Dotnet) EXCELDOTNET : PROGRAMMER EXCEL EN DOTNET SANS VBA NI VSTO par Patrice99
Source avec Zip Source avec une capture AJOUTEZ VOTRE COMPLÉMENT À VISUAL BASIC 6 SANS ÊTRE CONTRAIN... par VBsearch
Source avec Zip PILOTER ACROBAT READER DEPUIS EXCEL ET VBA par jpduf
Source avec Zip Source avec une capture INTERCEPTER DES APPELS DE METHODE (SURCHARGE DE VTABLE) par Renfield

Commentaires et avis

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

interessant.

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 :)

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.

Commentaire de Labuzz le 11/04/2005 14:50:44

Desole mais je porte bien mon nick...

Comment ca marche ????

Merci

I.Labuzz

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

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.

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

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!!!

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

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

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...

Commentaire de ShareVB le 06/01/2007 22:06:42

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

ShareVB

Commentaire de soldier8514 le 28/03/2010 17:48:50

je me répète un peu mais il faut qq1 pour soulever le problème :

sur windows xp : pas de problème : tu selectionnes par exemple 30 fichier puis click droit : ouvrir avec mon programme et le programme demarre et charge les 30 fichiers


sur windows 7 (jai pas essayé sur vista) : tu selectionnes  30 fichiers puis click droit :  il se passe rien , t'as pas la possibilite de cliquer sur 'ouvrir avec mon programme !!!

tu selectionnes moins de 15  fichiers puis click droit : et là ca marche comme pour xp : ouvrir avec mon programme et le programme demarre et charge les 15 fichiers

bug ou configuration chelou de windows 7 ???  

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,075 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales