IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API, COM et SDKs Delphi Discussion :

[Delphi 7] Comment ouvrir un fichier par défaut avec mon application personnelle


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre averti
    Homme Profil pro
    Sans emploi
    Inscrit en
    Novembre 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2017
    Messages : 46
    Par défaut [Delphi 7] Comment ouvrir un fichier par défaut avec mon application personnelle
    Bonjour à tous !

    Comme l'indique le titre, j'ai développé une petite application gérant le format RTF mais n'arrive pas à ouvrir les fichiers avec mon application en cliquant dessus. En effet, je désirerais pouvoir choisir mon programme par défaut pour ouvrir les fichiers RTF. Je ne vois pas dans Delphi 7 la possibilité de le faire. Est-ce que quelqu'un aurait une solution à me fournir ?

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 705
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  3. #3
    Membre averti
    Homme Profil pro
    Sans emploi
    Inscrit en
    Novembre 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2017
    Messages : 46
    Par défaut Comment ouvrir un fichier par défaut avec mon application personnelle
    Bonjour,

    J'ai déjà posé cette question qui est dans le titre mais on a déplacé mon sujet vers un sujet concernant la base de registres (ce qui ne m'intéresse pas du tout). Je voudrais savoir comment ouvrir un fichier avec mon application personnelle et en faire le programme par défaut. Je pense que cela doit être possible avec du code Delphi. Aussi je demande à ce que ma question ne soit pas déplacée à nouveau vers un sujet sur la base de registre.

    Si quelqu'un à la solution alors merci beaucoup.

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 947
    Billets dans le blog
    6
    Par défaut
    Bonsoir,

    Il s'agit d'indiquer au système d'exploitation quel programme il doit lancer quand on choisit d'ouvrir un fichier ayant une extension donnée.

    Il se trouve que Windows stocke pour la conserver cette information dans une base de données, dite registre.

    Le code Pascal qui permettra d'affecter dans ce registre le programme voulu à l'extension voulue encapsule l'API Windows ad hoc.

    C'est la seule solution, jusqu'à plus ample informée, et cette nouvelle discussion va donc rejoindre la précédente...
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    Membre averti
    Homme Profil pro
    Sans emploi
    Inscrit en
    Novembre 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2017
    Messages : 46
    Par défaut Merci
    Bonjour et merci

    Avec beaucoup de retard je réponds à votre message et m'en excuse. Je sais très bien qu'il faut passer par la base de registre mais le sujet que j'ai vu sur le forum concernant cette question est plutôt un peu diffus. En fait, lors de la création de l'installation de mon application je dispose d'un bouton dans l'installateur intitulé "Registre" mais je ne sais absolument pas quelle clé ou valeur chaine je suis sensé créer pour permettre une extension totalement inconnue et purement personnelle. Si quelqu'un pouvait me donner un exemple je lui en serai reconnaissant.

    Encore toutes mes excuses pour mon retard concernant la réponse et merci.

    Bonne journée !

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 979
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 979
    Par défaut
    Exemple Inno Setup.

    Extension : .xyz
    Identificateur du programme (nom quelconque) : MonProgXYZ
    Programme : MonProg.exe
    Code IS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Root: "HKCR"; Subkey: ".xyz"; ValueType: string; ValueData: "MonProgXYZ"
    Root: "HKCR"; Subkey: "MonProgXYZ\shell\open\command"; ValueType: string; ValueData: "{app}\MonProg.exe %1"

  7. #7
    Membre averti
    Homme Profil pro
    Sans emploi
    Inscrit en
    Novembre 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2017
    Messages : 46
    Par défaut Ouvrir un fichier par défaut avec mon application personnelle
    Bonjour et merci pour la réponse,

    J'ai téléchargé InnoSetup comme vous me l'avez suggéré mais cependant je n'y ai vu aucune option (ni dans le script) me permettant d'ajouter votre code. j'ai réussi à associer mon extension de fichier personnelle qui est CTLH. Lorsque je clique sur un de ces fichiers, mon application est bien lancée mais elle ne charge pas le fichier sur lequel j'ai cliqué. Je suis allé dans la base de registre et j'ai saisi ce qui suit :Nom : REGISTRE.jpg
Affichages : 1995
Taille : 12,0 Ko. Cependant il y a toujours ce même problème de chargement de fichier. Je pense que je dois faire quelque chose qui ne fonctionne pas ou bien peut-être (voire surement) il faudrait y ajouter une clé ou la modifier avec une valeur.

    Ce serait vraiment sympa si vous ou quelqu'un d'autre pouvait m'aider car je fais de l'informatique depuis de nombreuses années mais m'y perds dans la base de registre qui est assez complexe pour ma part.

    Merci d'avance,

  8. #8
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 979
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 979
    Par défaut
    L'entrée dans la BdR ne semble pas correct. Mais bon, si tu dis que ça fonctionne...

    Après, tu as bien sûr géré le passage du paramètre par ParamStr dans ton application, n'est-ce pas ?

  9. #9
    Membre averti
    Homme Profil pro
    Sans emploi
    Inscrit en
    Novembre 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2017
    Messages : 46
    Par défaut Ouvrir un fichier par défaut avec mon application personnelle
    Bonsoir et merci,

    Décidément je n'y comprends rien de rien. J'ai suivi des tutos sur la base de registre, ai fait comme vous m'avez dit ai inséré le code concernant le registre dans mon application mais ne parvient à rien du tout. Lorsque je clique sur l'icône de mon fichier, mon programme se lance bien mais le fichier, lui, n'ai pas chargé. Au total, cela fait deux jours que je cherche tous les moyens possibles. Je redémarre le système à chaque modification mais rien non-plus.

    J'ai appris que l'icône elle-même pouvait poser un problème si elle est personnalisée (je suis sous Windows 7 64 bits). Donc j'ai sélectionné une icône standard mais là rien non-plus. Si vraiment quelqu'un pouvait me donner la solution à ce problème, là, je lui en serai vraiment reconnaissant.

    Merci à tous.

  10. #10
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 979
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 979
    Par défaut
    Citation Envoyé par orca29 Voir le message
    Lorsque je clique sur l'icône de mon fichier, mon programme se lance bien mais le fichier, lui, n'ai pas chargé.
    Et ça ne va pas se faire tout seul comme par enchantement.

    Le programme est simplement appelé avec le fichier en paramètre, rien de plus. C'est ensuite à ton programme de détecter ce paramètre et de lancer les actions requises ; le chargement.

    Tu as certainement un bouton "Ouvrir" dans ton programme. Et bien à la place de récupérer le nom du fichier par TOpenDialog.FileName, tu le récupères par ParamStr(1) au démarrage. La suite (le chargement) est identique dans les deux cas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    procedure TForm1.bOpenClick(Sender: TObject);
    begin
      if OpenDialog1.Execute then
        LoadFile(OpenDialog1.FileName);
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      if ParamCount > 1 then
        LoadFile(ParamStr(1));
    end;
     
    procedure TForm1.LoadFile(aFileName: TFileName);
    begin
      //Chargement
    end;
    La BdR est secondaire, tu peux tester le principe en appelant ton programme avec un fichier en paramètre.

  11. #11
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 535
    Par défaut
    Bonjour,

    @Andnotor :

    ce n'est pas plutôt (??) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      if ParamCount > 0 then
        LoadFile(ParamStr(1));
    A+
    Charly

  12. #12
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 979
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 979
    Par défaut
    C'est parfaitement illogique mais tu as raison

  13. #13
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 721
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    C'est parfaitement illogique
    en quoi est-ce illogique ? paramstr(0) par convention MS correspond à l'application

    tant qu'à faire il faudrait même écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ParamCount=1 then  LoadFile(ParamStr(1));
    il faudrait même à mon avis faire plus, tester s'il y a plus de paramètres et faire les actions nécessaires en ce cas : un shellExcute pour chaque paramètre par exemple

  14. #14
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 979
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 979
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    paramstr(0) par convention MS correspond à l'application
    Et ?
    ParamStr(0) + ParamStr(1) = 2 éléments.

    Mais non, on doit considérer que ParamStr est un "tableau" à base 1, ParamCount est à base 1 mais l'élément 0 existe et est accessible... Non, je ne trouve pas ça logique

  15. #15
    Membre averti
    Homme Profil pro
    Sans emploi
    Inscrit en
    Novembre 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2017
    Messages : 46
    Par défaut
    Bonjour à tous et merci !

    Avec beaucoup de retard je réponds pour vous remercier. J'ai saisi le code de SergioMaster et peux ouvrir maintenant mes fichiers RTF avec mon application personnelle. Apparement il n'y a pas besoin d'aller fouiner dans la base de registre.

    Donc merci à tous !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment ouvrir un fichier qui est sur mon téléphone
    Par kryptikcreations dans le forum Android
    Réponses: 2
    Dernier message: 17/03/2014, 17h27
  2. Comment ouvrir le fichier .img téléchargé avec Akamaï ?
    Par Oppenheimer dans le forum Windows 8
    Réponses: 2
    Dernier message: 16/11/2013, 13h41
  3. Réponses: 1
    Dernier message: 09/05/2013, 11h39
  4. [Converter/Culture] Comment modifier la culture par défaut de mon Converter ?
    Par tomlev dans le forum Windows Presentation Foundation
    Réponses: 15
    Dernier message: 09/10/2008, 18h02
  5. Comment modifier le curseur par défaut de l'application
    Par homeostasie dans le forum Visual C++
    Réponses: 2
    Dernier message: 28/06/2007, 17h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo