Bienvenue sur le forum !

Si vous souhaitez rejoindre la communauté, cliquez sur l'un de ces boutons !

Qt 5 : 5.9.1 - Qt Creator : 4.3.1 - Qt Installer : 2.0.3 - JOM : 1.1.2 - Qt Build suite : 1.7.0 - VS Qt 5 : 2.0.0

Ajout item menu contextuel fichiers...

Bonjour,

Nostalgique de la fonction "Résumé"/"Commentaires" présente dans XP avec un clic droit sur tout type de fichier en NTFS, j'ai voulu retrouver cette dernière sur Seven Pro et après pas mal de recherche sur le sujet (Metadonnées ADS), ai fini par développer en C++ avec Qt une appli (Resume.exe) permettant de retrouver la fonctionnalité en question.

Initialement en glisser/déposer, j'ai vectorisé l'appli dans le menu contextuel de fichiers de Seven en utilisant l'utilitaire M7CM.exe (très bien fait!).
Ca fonctionne très bien quelque soit le fichier cliqué (la métadonnée 'resume' est affichée si elle existe, sinon, un champ texte éditable vide permet d'en ajouter une; accepte aussi le copier/coller).

Or en essayant par clic droit avec un fichier dans les dossiers "Programmes" & "Programmes(x86)" de Seven Pro (en mode utilisateur & administrateur), le champ texte reste désespérément vide, ainsi que le nom du fichier cliqué!
Si l'on y entre un commentaire, on obtient l'erreur "Accès refusé!" lorsque l'appli essaie de sauver sur le disque.

Par contre, ça fonctionne sans problème par glisser/déposer du fichier sur resume.exe et ce sans rien changer. ;)

D'où ma question: quand on ajoute dans le menu contextuel de fichiers de Seven une entrée vers
un exécutable, que faut-il faire de plus pour avoir un accès complet?

Réponses

  • De mémoire, il n'y a pas un paramètre spécifique à passer ?

    Il faudrait que tu fouillés un peu dans les API sur le MSDN...
  • dergen said:
    De mémoire, il n'y a pas un paramètre spécifique à passer ?

    Il faudrait que tu fouillés un peu dans les API sur le MSDN...
    Bonjour, me revoilà (bonne année à tous!)
    Pour revenir à la question posée concernant le problème survenu avec la commande shell (cf item 'Résumé' ajouté au menu contextuel des fichiers), j'ai fini par trouver la cause: dans les noms de fichier avec un espace (ex. "Ceci est un test"), la commande shell telle qu'elle figure dans le registre ("C:\Users\vec\Prgmes\Resume.exe %1) ne prend en compte que le 1er mot du nom, le 1er espace étant considéré comme séparateur.
    Résultat, le fichier n'est pas trouvé!

    Il est donc nécessaire de décoder l'argument complet; j'ai effectué ceci:

    /* Récupération du nom de fichier à traiter, Resume.exe pouvant être appelé:
    - soit par double-clic sur l'exécutable Resume.exe et ouverture du dialogue standard de fichiers,
    - soit par glisser-déposer du fichier sur Resume.exe,
    - soit avec le clic-droit sur le fichier et l'item "Résumé" du menu contextuel

    NB: dans les deux 1ers cas, le fichier est bien trouvé et la meta-donnée 'resume' ajoutée
    */

    switch(args.size())
    {
    case 1: //pas de nom de fichier en argument
    nom_fichier = QFileDialog::getOpenFileName(this,"Sélectionner un fichier...",QString(),"All (*.*)");
    break;

    case 2://nom de fichier sans espaces en argument
    nom_fichier = args.at(1);//nom du fichier si pas d'espaces dans le nom
    break;

    default:
    nom_fichier = args.at(1);//1er mot du nom du fichier
    for (int j(2); j<args.size();j++) //mots suivants
    nom_fichier +=" "+ args.at(j);
    break;
    }
    Tout semblait maintenant bien focntionner, jusq'à ce que j'utilise cette possibilité pour ajouter une meta-donnée 'resume' à des fichiers video dont le nom comporte une apostrophe (ex. "C'est un beau jour").
    Comme j'affiche en titre de fenêtre le nom du fichier récupéré en argument, je me suis aperçu que le nom était incorrect (ici on a "Cest un beau jour" affiché en titre) et
    de nouveau, même problème!

    Il me semble avoir lu que le shell ne décode pas le ' dans le nom...

    D'où ma question: y-a t'il une façon de s'en sortir pour récupérer le nom du fichier tel que présenté en argument?
Connectez-vous ou Inscrivez-vous pour répondre.