Ouvrir des documents dans la même instance de l'application sans relancement de l'exe (dde) en .net

Description

Dans VB2005, il existe une option pour rendre une application "à instance unique" et pouvoir récupérer dans l'instance ouverte une liste des fichiers sur lesquels l'utilisateur a cliqué...Sous Visual C#, il n'existe pas encore cette option...

Ce code permet donc 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 aussi que cette méthode est officielle (mais pas surdocumentée) contrairement à d'autres...

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

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

Codes Sources

A voir également