Ouverture de plusieurs fichiers dans le même programme [Résolu]

md21 32 Messages postés mercredi 10 janvier 2007Date d'inscription 1 septembre 2015 Dernière intervention - 1 mars 2011 à 16:43 - Dernière réponse : md21 32 Messages postés mercredi 10 janvier 2007Date d'inscription 1 septembre 2015 Dernière intervention
- 14 mars 2011 à 12:11
Bonjour,

je cherche à ouvrir plusieurs fichiers dans une même application avec la commande ShellExecute (à moins qu'il existe autre chose de mieux ?)
Je dois ouvrir entre 1 et 25 tables Mapinfo (extension .tab avec des fichiers associés), soit avec mapinfo, soit avec Quantum Gis qui appartient au monde libre. Cela dit, je pense que le problème doit être le même avec n'importe quel type de fichier ...

J'ai donc un code (provisoire pour l'instant) du type:

if ShellExecute(Handle,'Open',PChar(Programme),PChar(Table),Nil,SW_SHOWDEFAULT) <= 32 then
ShowMessage('erreur lors du chargement de la table !');

que je répète plusieurs fois. "Programme" et "Table" sont des variables qui désignent respectivement le logiciel et le fichier à ouvrir.

Le problème c'est que Windows ouvre autant de nouvelles instances du même programme qu'il y a de tables. Par exemple je ne veux pas 4 tables dans 4 Mapinfo différents mais 4 tables dans le même Mapinfo.

Si j'utilise le programme par défaut associé à l'extension, cela marche pour Mapinfo mais pas pour Quantum Gis, avec un code plus simple:

if ShellExecute(Handle,'Open',PChar(Table),Nil,Nil,SW_SHOWDEFAULT) <= 32 then
ShowMessage('erreur lors du chargement de la table !');

En plus cela ne m'arrange pas car j'aurais besoin de choisir l'application à utiliser.

J'ai également essayé de passer plusieurs noms de tables dans une même commande ShellExecute mais cela ne marche pas, même en mettant ou non des guillemets et en essayant différents séparateurs: espace, virgule, ...

Est-il possible de forcer l'ouverture de tous les fichiers dans une même instance de programme ?

merci

md21
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Cirec 4221 Messages postés vendredi 23 juillet 2004Date d'inscription 11 mai 2018 Dernière intervention - 1 mars 2011 à 17:18
3
Merci
Salut,

tu peux déjà ouvrir une fenêtre DOS en lançant CMD.exe puis tu tapes :
MapInfo.exe /?

MapInfo.exe /help

si le programme en est équipé tu auras une aide sur la ligne de commande ... et donc la manière de procéder pour ouvrir plusieurs map dans une instance.

sinon il y a aussi ce tutoriel (en PDF) pour piloter MapInfo depuis Delphi.


[hr]@+Cirec
[hr]

Merci Cirec 3

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de Cirec
Meilleure réponse
cs_MAURICIO 2233 Messages postés mardi 10 décembre 2002Date d'inscription 15 décembre 2014 Dernière intervention - 1 mars 2011 à 18:42
3
Merci
Salut,

les solutions (gratuites, j' accepte les dons ^^) sont ici :
Composants Cindy pour Delphi

Tu peux aussi trouver sur ce site les compos ainsi que la démo: regarde donc les derniers codes déposés.

Solution 1 - Avec Shellexecute:
Utilisation du Compo TcyAppInstanes: empêche plusieurs instances de ton prog tout en récupérant les paramêtres passés.

Solution 2 - Avec lec commandes DDE (lorsque tu double cliques sur le fichier que tu désires ouvrir sous Windows):
Utilisation du Compo TcyDDECmd: l' extension sera enregistrée avec l' information necessaire pour que les fichiers s' ouvre avec ton prog. Le compo possède un événement pour récupérer le nom de fichier à ouvrir.

A+



Composants Cindy pour Delphi

Merci cs_MAURICIO 3

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de cs_MAURICIO
Meilleure réponse
Cirec 4221 Messages postés vendredi 23 juillet 2004Date d'inscription 11 mai 2018 Dernière intervention - 13 mars 2011 à 17:08
3
Merci
Salut md21,

merci de partager le résultat de ton moteur 3D ... et quel résultat !!! ça donne envie de voir la suite et même d'y jouer

même si ma contribution est quasi insignifiante comparé à l'ampleur du projet, je suis content d'avoir pu/su t'aider à augmenter les performances de ton moteur 3D.

J'attends avec patience impatience la suite

Mais si tu souhaites publier ton code (quand ce sera le moment) tu peux toujours prendre contacte avec moi et on essayera de trouver une solution


[hr]@+Cirec
[hr]

Merci Cirec 3

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de Cirec
md21 32 Messages postés mercredi 10 janvier 2007Date d'inscription 1 septembre 2015 Dernière intervention - 9 mars 2011 à 16:43
0
Merci
Bonjour,

merci à tous les deux pour vos réponses, j'ai été occupé par ailleurs qq jours c'est pourquoi je récris un peu tardivement. j'espère pouvoir m'en sortir maintenant. Je vais essayer les composents Cindy, ça a l'air bien. Je connaissais déjà le tuto sur le contrôle de Mapinfo depuis Delphi, j'avais même fait qq essais il y a un an ou deux ... le problème c'est que je dois aussi pouvoir faire la même chose avec Quantum Gis


@Cirec
merci pour ta précieuse aide l'année dernière concernant mon moteur 3D. Voici ce que je suis arrivé à faire en début d'année (pas de soucis il s'agit juste de captures d'écran sous dl.free.fr mais ça me fait plaisir de te les montrer d'autand que je ne peux pas publier la source car le projet fait déjà qq dizaines de Mo).
http://dl.free.fr/c3oLwocYx
http://dl.free.fr/pQ5UHeo6Q
http://dl.free.fr/avBJ2Woi3
En 1680 x 1050, le framerate est très très bas, mais cela s'arrange vite en diminuant la résolution, d'autand que pour l'instant je n'ai pas encore fait vraiment d'optimisation du code. Il reste encore beaucoup de travail mais je suis obstiné ...

md21
Commenter la réponse de md21
md21 32 Messages postés mercredi 10 janvier 2007Date d'inscription 1 septembre 2015 Dernière intervention - 14 mars 2011 à 12:11
0
Merci
merci Cirec,

ton post me fait vraiment très plaisir, il m'est arrivé de douter un peu ... tes encouragements me rassurent

Je suis tout à fait d'accord pour publier mon code (effectivement pour l'instant le projet n'est pas prêt), le but n'est pas de le garder pour moi mais au contraire de partager. Je compte utiliser ce moteur pour créer un jeu vidéo (freeware bien sûr), mais si d'autres personnes veulent créer leur jeu, voire même améliorer le moteur, c'est encore mieux.

La partie 3D est presque terminée, comme tu as vu, je peux intégrer des sprites avec même une gestion de la transparence qui utilise un plan alpha (cristal de quartz). Le tout est "vectorisé" et se calcule en mètres comme dans les moteurs modernes. Bien sûr ce ne sont pas de vrais modèles 3D, mais ils sont placés et calculés sur des supports vecteurs (et pas posés en vrac par dessus le décor comme les jeux de l'époque), ce qui fait que le rendu est bien meilleur.

Depuis plus d'un mois, je suis en train d'essayer de rajouter une dimension verticale, c'est à dire la possibilité d'escaliers montants ou descendants et des pièces à des niveaux et des hauteurs de plafond différentes ... beaucoup d'échecs mais je suis sur le point d'y arriver. C'est le dernier point à résoudre concernant la partie "graphique", si je n'y arrive pas, je resterai sur des niveaux "plats" mais cela vaut le coup d'essayer.

Il y aura ensuite une phase d'optimisation de cette partie 3D car je pense qu'il est possible de gagner du framerate, mon code est très certainement maladroit à bien des endroits (surtout que le but premier est déjà que tout fonctionne). J'aimerai savoir, si, dans qq mois probablement, je pouvais te contacter pour te fournir le code pour regarder comment l'optimiser, ce serait vraiment super ... dis moi sincèrement si tu serais d'accord, je ne veux pas abuser de ta gentillesse et de tes connaissances ? Mais dans tous les cas je prendrais contact avec toi pour voir comment publier le code.

Pour que le moteur soit complet et afin de pouvoir créer un jeu vidéo, il n'y a pas que la partie graphique. Je travaille également sur le tout le reste mais c'est beaucoup plus facile, donc je pense arriver à m'en sortir. L'application comporte notamment une partie "éditeur" (c'est un genre de petit autocad très simple) qui permet qui permet la création et la gestion des niveaux. Je travaille également sur l'IA des ennemis mais je n'en suis qu'à un stade de réflexion pour l'instant. Il y a aussi la partie "son" sur laquelle j'ai commencé à faire des essais ...

md21
Commenter la réponse de md21

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.