Retransmission de tous les paramètres vers une seule application lors de l'ouverture simultanée de plusieurs fichiers dans l


Description

J'ai fait ce petit code en réponse à une question posée dans le forum par ActiveX : http://www.delphifr.com/forum.v2.aspx?ID=454159

Conclusion :


Voilà quelques explications...

L'explorateur windows ouvre chaque fichier sélectionné avec des instances différentes d'une application. Par exemple, si on sélectionne trois images bitmap et qu'on les ouvre simultanément, on aura sur l'écran 3 fenêtres MsPaint... C'est normal car windows ouvre une première fois mspaint avec le premier fichier en paramètre, puis une deuxième fois (donc dans une autre instance) avec le deuxième fichier en paramètre, et enfin une troisième fois avec le troisième fichier en paramètre. Chaque instance de mspaint ne reçoit donc qu'un seul paramètre et on se retrouve avec trois fenêtres différentes... C'était le problème d'ActiveX.

L'objectif de cette source est de permettre, lors de l'ouverture de plusieurs fichiers depuis l'explorateur de rassembler tous les paramètres et de les transmettre à une seule application qui saura les gérer tous (par exemple, dans word, si plusieurs documents sont ouverts en même temps, ils sont tous dans des fenêtres enfant et la fenêtre parent les contrôle).

Revenons à l'exemple du début, avec les trois bitmap :
Quand l'explorateur ouvre la première instance de l'application, celle-ci (l'appliation 1) va se lancer normalement et va se préparer à recevoir les messages des autres instances ouvertes par la suite. Lors de l'ouverture de la deuxième instance, celle-ci va détecter qu'une instance est déjà lancée (l'application 1) et va envoyer les paramètres qu'elle a en entrée via messages systèmes à la première application qui va les recevoir et les ajouter à sa liste de paramètres. La deuxième application, une fois l'envoi fini, se termine. La troisième en fera de même. On arrive au final à récupérer les trois paramètres dans une seule application (utile pour les logiciels de traitement de texte ou d'édition photo...).

J'utilise des atoms pour transférer des chaînes de caractères par messages.

Etant donné qu'il est impossible d'éditer la ligne de commande elle-même de l'application lors de l'exécution, les paramètres que l'application reçoit sont stockés dans une TStringList nommée "params". Pour accéder au Xième paramètre , il suffit de faire params[X]. Pour en avoir le nombre total, il faut faire params.Count. Rien de plus simple ;)

Je suis ouvert à toutes vos remarques et suggestions... :p

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.