Partage
  • Partager sur Facebook
  • Partager sur Twitter

Association d'icône à un type de fichier

Ca ne marche qu'à moitié

Anonyme
    15 juin 2008 à 12:36:44

    Bonjour,

    Je sais que les topics à traiter de ce sujet sont nombreux mais après en avoir lu la plupart (et cherché sur Internet), je n'arrive pas à solutionner mon problème.

    Je m'explique, j'associe un type de fichier à un programme (ça, aucun problème) mais quand j'essaie de définir un icône, ça marche pas.

    Voici mon code (J'utilise QSettings) :

    QSettings *donnees = NULL;
    
    #if defined Q_OS_WIN32
    	donnees = new QSettings("HKEY_CLASSES_ROOT\\." EXT_DICTIONNAIRES, QSettings::NativeFormat);
    
    	if(donnees->status() != QSettings::NoError)
    	{
    		donnees = new QSettings("HKEY_CURRENT_USER\\Software\\Classes\\." EXT_DICTIONNAIRES, QSettings::NativeFormat);
    	}
    
    	if(donnees->value("Default").toString() != "Learn More." EXT_DICTIONNAIRES)
    	{
    		BoiteQuestionBdr question(tr("Voulez-vous définir %1 comme programme associé aux fichiers Dictionnaires ?").arg(NOM), this);
    		question.setCheminBdr("ouverture.lmd");
    
    		if(question.exec() == QDialog::Accepted)
    		{
    			donnees->setValue("Default", "Learn More." EXT_DICTIONNAIRES);
    		}
    	}
    
    	delete donnees;
    
    	donnees = new QSettings("HKEY_CLASSES_ROOT\\Learn More." EXT_DICTIONNAIRES, QSettings::NativeFormat);
    
    	if(donnees->status() != QSettings::NoError)
    	{
    		donnees = new QSettings("HKEY_CURRENT_USER\\Software\\Classes\\Learn More." EXT_DICTIONNAIRES, QSettings::NativeFormat);
    	}
    
    	if(donnees->value("shell/open/command/Default") != QString("\"") + QCoreApplication::arguments().first() + QString("\" \"%1\""))
    	{
    		donnees->clear();
    
    		donnees->setValue("Default", "Learn More Dictionnaires");
    		donnees->beginGroup("DefaultIcon");
    		donnees->setValue("Default", QCoreApplication::arguments().first() + ",2");
    		donnees->endGroup();
    		donnees->beginGroup("shell/open/command");
    		donnees->setValue("Default", QString("\"") + QCoreApplication::arguments().first() + QString("\" \"%1\""));
    		donnees->endGroup();
    		donnees->beginGroup(tr("shell/Modifier/command", "Chemin d'accès à la BDR, ne traduire que Modifier"));
    		donnees->setValue("Default", QString("\"") + QCoreApplication::arguments().first() + QString("\" \"%1\"")); //! A modifier
    		donnees->endGroup();
    	}
    
    	delete donnees;
    
    	/* reste du code */
    #endif
    


    Et voici mon fichier .rc :

    #define SLM
    #define FICHIER_RC
    #include "../../constantes.hpp"
    #undef FICHIER_RC
    
    1 VERSIONINFO
    FILEVERSION 0,5,0,0
    PRODUCTVERSION 0,1,0,0
    FILEOS 0x04
    FILETYPE 0x02
    BEGIN
            BLOCK "StringFileInfo"
            BEGIN
                    BLOCK "040904E4"
                    BEGIN
                            VALUE "ProductVersion", VERSION_SUITE
                            VALUE "FileDescription", "Students : Learn More"
                            VALUE "LegalCopyright", ""
                            VALUE "Comments", "Pour plus de détails :\r\n" SITE
                            VALUE "CompanyName", ""
                            VALUE "OriginalFilename", "SLM.exe"
                            VALUE "ProductName", NOM
                            VALUE "FileVersion", VERSION_PROG
                    END
            END
    END
    
    2 ICON "../img/icone.ico"


    Et si je modifie manuellement (via regedit) la valeur de la clé Default de DefaultIcon et que j'indique un .ico, ça marche...

    Je comprends pas trop, si quelqu'un peut éclairer ma lanterne...
    • Partager sur Facebook
    • Partager sur Twitter
      15 juin 2008 à 19:06:42

      Ca se fait en effectuant pas à pas la méthode donnée sur MSDN, partie Shell.
      Et il faudrait arrêter d'utiliser QT et autres libs pour développeurs amateurs, qui n'est donc pas utilisée professionnellement; tout ce qu'on fait sur QT, c'est du temps perdu et on n'apprend donc absolument rien.
      Il y aura un véritable massacre lorsque tous ceux qui ont passé des mois la dessus devront tout réapprendre de zéro, en standard comme chez tous les clients du marché...
      • Partager sur Facebook
      • Partager sur Twitter
        15 juin 2008 à 20:32:44

        Citation : sollen - (ou george135)

        Et il faudrait arrêter d'utiliser QT et autres libs pour développeurs amateurs, qui n'est donc pas utilisée professionnellement; tout ce qu'on fait sur QT, c'est du temps perdu et on n'apprend donc absolument rien.
        Il y aura un véritable massacre lorsque tous ceux qui ont passé des mois la dessus devront tout réapprendre de zéro, en standard comme chez tous les clients du marché...


        Comment expliques-tu ceci :

        Citation : http://trolltech.com/company/customers

        Trolltech’s Qt is used in popular software such as Skype, Google Earth, Adobe Photoshop Elements, Lucasfilm and by more than 5000 customers worldwide. In addition, Qt has been used in countless open source applications.


        ?

        Et accessoirement, tout le monde n'a pas l'ambition de devenir professionnel...
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          16 juin 2008 à 22:53:54

          J'utilise Qt parce qu'il permet de le faire, sur un autre programme uilisant SFML, je l'ai fait avec les fonctions de l'API windows... Inutile d'inclure une en-tête pour quelque chose que je peux tout de même faire
          • Partager sur Facebook
          • Partager sur Twitter

          Association d'icône à un type de fichier

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown