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

Windows Discussion :

Dans les bas-fonds de Windows


Sujet :

Windows

  1. #1
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut Dans les bas-fonds de Windows
    Salut les Windows,

    C'est la section C qui m'a rediriger ici et j'ai quelques questions a mes amis expert en Windows.

    En ayant développer une version Windows de mmp-2.1 (Micro Music Player), d'ailleurs c'est la première fois que j'y arrive en tant que Linux geeks, je n'ai pas implémenter certaines choses car gtk+-3.0 étant une G.U.I orienter Linux tout ne fonctionne pas sous Windows:

    + Comment accéder par programmation a la base de données des relations de format de fichiers et d'applications.

    Par exemple pour mettre son application comme application par défaut pour certains type de fichier(s).

    Avec GTK+3.0 cela se fait grâce a GIO, mais sous Windows il me dit que c'est inaccessible et qu'il manque le truc (j'ai pas compris quoi) gvfs ???

    + Comment insérer un lien dans le menu contextuel de Windows afin que mon application puisse lancer des fichiers depuis le navigateur de fichiers ?

    Car mon programme peut prendre une liste de fichiers ou un répertoire en ligne de commande cela marche très bien.

    Mais une fois installer impossible de lancer un fichier avec mon application simplement grâce au navigateur de fichiers.

    Même en ayant mis mon application manuellement comme application par défaut par exemple pour les fichiers *.mp3.


    Faut il utiliser quelque chose comme winapi ou comment s'y prendre par programmation (C/C++) ?

    Merci pour vos réponses éclairées, illuminant les ténèbres de mon ignorance Windows.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Salut,
    • Les associations "de base" se font via le Registre. Il y a des pages qui documentent ça sur MSDN.
    • Le problème, c'est que Windows a réduit les possibilités du côté du "sélectionner plusieurs fichiers et les ouvrir d'un seul coup", qui est explicitement un des trucs que tu veux faire. Pour ça, il te faut faire une Drop Target, ce qui n'est pas trivial (et pour ce qui est des interactions avec GTK+, j'en sais encore moins!)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Merci pour cette réponse.

    Bon concernant les associations fichiers/applications je vais plutôt voir si je ne peut me débrouiller de trouver ce fameux gvfs dont il est question dans le message d'erreur qui dit aussi qu'il n'arrive pas a trouver la base de donnée.?.

    ---

    Le problème, c'est que Windows a réduit les possibilités du côté du "sélectionner plusieurs fichiers et les ouvrir d'un seul coup", qui est explicitement un des trucs que tu veux faire. Pour ça, il te faut faire une Drop Target, ce qui n'est pas trivial (et pour ce qui est des interactions avec GTK+, j'en sais encore moins!)
    Je ne vais aller jusque là, mais a un moment je pensais que Microsoft voulait réduire la possibiltées de créer un programme pour Windows a 2 possiblitées:

    1. Je suis programmeur travaillant chez microsoft.

    2. Je raque une licence Visual studio.

    J'en suis venue a cette conclusion suite de terribles tortures psychologiques vue que compiler une lib prends entre 1 et 99 % du temps consacré aux programme.
    Le reste pour se remettre de ses blessures.

    Mais je suis content de Windows en tant que utilisateur lambda mais coté programmation, programmeurs, communautés (et humanité) envers ceux qui veulent contribuer a leur système il sont a l'est au goulag...

    Sinon j'ai retrouver la question que j'ai oublier de poser:

    + Comment accéder au cache des métadonnées des fichiers ?

    Car sous Linux, mmp-2.1 (mon programme) trouve systématiquement les données alors que

    la version Windows de mmp-2.1 est obliger de s'en remettre aux fonctions fallback (heureusement j'ai envisager cette possibilité) ...

    PS: Soit dit au passage que l'interface graphique de mon programme (GTK+-3.0) est plus jolie que vlc avec son Qt, malgré le mastodonte que c'est.
    Bref GTK rends bien sous Windows avec comme thème par défaut Adwaita en déclinaison clair et sombre, sélectionnable selon ce que l'on préfère dans mmp-2.1 Windows.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Si tu es capable de bosser sans ATL/MFC, tu peux tout-à-fait prendre une édition gratuite de Visual Studio (personnellement j'ai Express 2013 For Windows Desktops... mais j'ai aussi un vieux 2005 pro obtenu via mon école grâce à MSDN Academic Aliliance)

    Et crois-moi, je joue beaucoup dans les bas-fonds en question de Windows, j'ai une solution avec tous les projets basés sur les séries "Dragging a Shell Object" et "What a drag" de Raymond Chen, sans compter une DropTarget améliorée (qui sert à me donner pas mal d'infos sur le truc droppé ou collé), PLUS des trucs en C# pour appeler ce genre de code... Et tout ça qui marche dans les éditions Express de Visual, sauf quand Raymond utilise des CComPtr<> de ATL/MFC.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    + Comment accéder au cache des métadonnées des fichiers ?
    Désolé, je ne connais pas cette partie-là. En fait, je ne vois même pas de quoi tu parles.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    J'ai pas compris grands chose de ce que tu a dit,

    mais un mot a fait mouche:

    drag-n-drop

    car gtk+-3.0 l'implémente merveilleusement bien sous Linux au point que

    le seule point fort de ce programme: EraseDropBox

    est de pouvoir glisser-déposer des fichiers ou dossiers dans le but de les effacés de manière sécurisé: un genre de poubelle sécuriser.

    Pourtant il utilise gtk+-2.0 et est écrit en python2.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    J'ignore s'il est facile ou non de faire un effaceur sécurisé sous Windows, mais il est au moins facile de lui donner une telle interface.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Désolé, je ne connais pas cette partie-là. En fait, je ne vois même pas de quoi tu parles.
    Et bien libvlc peut vous renvoyer des métadonnées: une fonction accesseur pour chaque type de données ou NULL si non trouvées et sous Windows a chaque fois il me renvoie NULL alors que sous Linux jamais.?.

    Qu'est ce que c'est que ce Bins !
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  9. #9
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    J'ignore s'il est facile ou non de faire un effaceur sécurisé sous Windows, mais il est au moins facile de lui donner une telle interface.
    Je me demande quelle serai l'apparence sous Windows de ce programme sachant que j'ai mal choisie la police des boutons.

    Mais bon un effaceur sécurisé, sous Windows, j'en ai déjà un, c'est pas moi qui l'est écrit, mais il est très bien.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Par métadonnées tu veux dire des trucs comme la longueur de piste d'un MP3?

    Il est possible que divers shells Linux (KDE, Gnome) maintiennent en effet un cache de métadonnées publiquement accessible, mais je ne crois pas que ce soit le cas sous Windows: La partie "cache" n'est probablement pas accessible publiquement, et donc on aurait besoin d'appeler systématiquement les fonctions qui appellent les Property Handlers...

    L'autre explication, c'est que libvlc ne sait pas invoquer les Property Handlers sous Windows, et donc extrait toujours "manuellement" les tags ID3. Je ne sais pas, je n'ai jamais utilisé les Property Handlers (mais j'ai déjà créé et appelé des Icon Handlers, par contre)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    (mais j'ai déjà créé et appelé des Icon Handlers, par contre)
    Quelques choses comme pour choisir une icône quand l'on veut l'assigner a un dossier.

    Car moi j'ai réussis une entré de mimetype de fichier balise de mon programme mk-project,

    ce qui fait qu'il suffit de cliquer sur le fichier qui est associer a une icône que j'ai construit moi-même pour lancer le programme avec la configuration écrit dans le fichier choisie: comme un fichier *.cbp de code-block, Visual doit avoir la même mécanique.

    Donc une icône faite maison,

    identifiant le type de fichier d'un coup d'oeil dans le navigateur de fichiers,

    fichiers avec l'icône lançant le programme avec les paramètres écrit dans le fichiers en question...


    C'est possible et si facile sous Windows (3 ans de C et 5 ans de Linux) ?
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  12. #12
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut métadonnées libvlc sous Windows.
    Par métadonnées tu veux dire des trucs comme la longueur de piste d'un MP3?
    C'est la seule donnée a laquelle mmp-2.1 Windows arrive a accédé.

    Il est possible que divers shells Linux (KDE, Gnome) maintiennent en effet un cache de métadonnées publiquement accessible,...
    L'autre explication, c'est que libvlc ne sait pas invoquer les Property Handlers sous Windows, et donc extrait toujours "manuellement" les tags ID3.
    Le faîte que libvlc retourne toujours NULL veut dire qu'il n'arrive pas a y accéder de quelque manières que ce soit...

    Bientôt Windows interdira d'accéder a ses propres données (mes fichiers) si ce n'est au travers de ses propres programmes (Windows media, etc...).

    Dans le navigateur de fichier Windows affiche les images de covers non-présente (pas de fichier images) dans le dossier de l'album et dans le file-selector de gtk+-3.0 elle sont présente aussi et du coup mmp-2.1 arrive afficher la cover-image mais le titre et l'auteur(s) sont toujours indisponible.
    Dommage car je formate les données présenté a l'utilisateur avec ceux-ci sinon fallback (nom de fichier).
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  13. #13
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    En fait, c'est justement grâce à Visual que j'ai appris l'existence des Icon Handlers: Les fichiers .sln n'ont pas la même icône selon la version de Visual qui les a créés, donc j'ai regardé dans le Registre et j'y ai vu une clé "IconHandler" pour le type .sln, ce qui m'a permis une recherche sur MSDN... Et permis de faire ceci:
    Nom : ZipIcons.png
Affichages : 270
Taille : 1,7 Ko

    Dans le cas des MP3, je pourrais probablement faire un programme qui accède aux Property Handler si j'avais le temps, mais je ne l'ai pas aujourd'hui ni dans la semaine qui vent.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  14. #14
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Finalement, j'ai fait un code d'exemple/test quand même:
    Code C++ : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    /*
    http://www.developpez.net/forums/d1598197/general-developpement/programmation-systeme/windows/bas-fonds-windows/#post8714011
    */
    #include <windows.h>
    #include <shlobj.h>
    #include <propsys.h>
    #include <stdio.h>
    #include <tchar.h>
    #include <StrSafe.h>
     
    HRESULT GetUIObjectOfFile(HWND hwnd, LPCWSTR pszPath, REFIID riid, void **ppv)
    {
    	*ppv = NULL;
    	HRESULT hr;
    	PIDLIST_ABSOLUTE pidl;
    	SFGAOF sfgao;
    	if (SUCCEEDED(hr = SHParseDisplayName(pszPath, NULL, &pidl, 0, &sfgao))) {
    		IShellFolder *psf;
    		PCUITEMID_CHILD pidlChild;
    		if (SUCCEEDED(hr = SHBindToParent(pidl, IID_IShellFolder, (void**)&psf, &pidlChild))) {
    			hr = psf->GetUIObjectOf(hwnd, 1, &pidlChild, riid, NULL, ppv);
    			psf->Release();
    		}
    		CoTaskMemFree(pidl);
    	}
    	return hr;
    }
     
     
    EXTERN_C void TestMP3Properties()
    {
    	HRESULT hr = CoInitialize(NULL);
    	if(SUCCEEDED(hr))
    	{
    		LPCWSTR filePath = L"C:\\Ton\\Chemin\\Ici\\Musique.mp3";
    		IPropertyStore *pProps = NULL;
    		hr = GetUIObjectOfFile(NULL, filePath, __uuidof(IPropertyStore), (void**)&pProps);
    		if(SUCCEEDED(hr))
    		{
    			puts("Property store obtained!");
     
    			DWORD count = 0;
    			hr = pProps->GetCount(&count);
    			if(SUCCEEDED(hr))
    			{
    				for(DWORD i=0 ; i<count ; i++)
    				{
    					PROPERTYKEY key = {0};
    					PROPVARIANT value = {0};
    					PropVariantInit(&value);
     
    					hr = pProps->GetAt(i, &key);
    					if(SUCCEEDED(hr))
    					{
    						OLECHAR buf[40] = L"";
    						StringFromGUID2(key.fmtid, buf, ARRAYSIZE(buf));
     
    						wprintf(L"%s - %u:\n", buf, key.pid);
     
    						hr = pProps->GetValue(key, &value);
    						if(SUCCEEDED(hr))
    						{
    							WCHAR valuebuf[20] = L"";
    							LPCWSTR ws = valuebuf;
    							switch(value.vt)
    							{
    							case VT_BSTR:
    								ws = value.bstrVal;
    								break;
    							case VT_LPWSTR:
    								ws = value.pwszVal;
    								break;
    							case VT_I2:
    								StringCbPrintfW(valuebuf, sizeof valuebuf, L"%d", value.iVal);
    								break;
    							case VT_UI2:
    								StringCbPrintfW(valuebuf, sizeof valuebuf, L"%u", value.uiVal);
    								break;
    							case VT_I4:
    								StringCbPrintfW(valuebuf, sizeof valuebuf, L"%d", value.intVal);
    								break;
    							case VT_UI4:
    								StringCbPrintfW(valuebuf, sizeof valuebuf, L"%u", value.uintVal);
    								break;
    							case VT_I8:
    								StringCbPrintfW(valuebuf, sizeof valuebuf, L"%lld", value.intVal);
    								break;
    							case VT_UI8:
    								StringCbPrintfW(valuebuf, sizeof valuebuf, L"%llu", value.uintVal);
    								break;
    							}
    							if(value.vt == VT_BSTR)
    								ws = value.bstrVal;
     
    							wprintf(L"\tType %u : %s\n", value.vt, ws);
    						}
    					}
    					PropVariantClear(&value);
    				}
    			}
     
    			pProps->Release(), pProps=NULL;
    		}
    		else
    			printf("GetUIObjectOfFile() failed with HRESULT = %08lX\n", hr);
    		CoUninitialize();
    	}
    	else
    		printf("CoInitialize() failed with HRESULT = %08lX\n", hr);
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  15. #15
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Merci médinoc pour ta réponse et d'avoir pris la peine de faire un script d'exemple:

    J'en suis autant désolé que toi mais le code que je vois est du chinois pour moi car il est plein de types et de fonctions propres a Windows dont je ne sais rien.

    Je ne peut donc pas prendre ton code et l'adapter, encore désolé mais je suis un Linux geek et tu m'aurai poser la question:

    En quel langage est écrit ce bout de code ?

    J'aurai répondus: Heu du Basic

    Tous ce que j'ai compris c'est qu'il accède aux métadonnées d'un fichier *.mp3.

    Encore autant désolé que toi que cela ne puisse pas m'aider

    car quand je me met a quelque chose je le fait a fond ou pas du tout

    et Windows est loin d'être une de mes priorités.

    Surtout que la version Windows de mmp-2.1 existe déjà et fonctionne (pas de façon optimale).

    J'ai posé ces quelques questions a but culturelles.

    Merci encore Luke Spywoker.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  16. #16
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Bonjours médinoc,

    Je te propose de mettre un titre approprier a ton poste afin qu'il puisse aider d'autres personnes plus qualifié

    ou cherchant des connaissances en Windows, comme par exemple:

    "Récupéré les métadonnées d'un fichier *.mp3 sous Windows" # Ou grace a winapi ou ce qui te semble le plus approprier.

    Encore merci.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  17. #17
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Il va falloir demander ça à un mod, car ça fait plus de trois jours. Et je suis sur smartphone pour la semaine.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

Discussions similaires

  1. Lecture des informations contenues dans les fichiers CDA de Windows
    Par DelphiCool dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 03/02/2013, 12h53
  2. Erreur d'affichage dans les boite de dialogue windows
    Par DEVELSI dans le forum Windows
    Réponses: 3
    Dernier message: 26/06/2007, 08h31
  3. Informations sur un exe (dans les propriétés windows)
    Par SteelBox dans le forum Windows
    Réponses: 6
    Dernier message: 06/07/2004, 18h20
  4. Gestion des message windows dans les threads
    Par billyboy dans le forum Windows
    Réponses: 5
    Dernier message: 06/10/2003, 17h25

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