Changer mode d'affichage dans un dossier , XP [Résolu]

Signaler
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
-
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
-
Salut,

Je voudrais savoir comment fait-on avec les API win 32 pour changer le mode d'affichage des icones d'un dossier precis ?
Sous XP, mettre l'affichage dans un dossier, en "Liste" par exemple.

Merci d'avance

4 réponses

Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
20
salut,

plusieurs choses :
-> il y a une méthode plus simple...je vais bientôt poster le code que je suis en train de faire...à base de http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shgetviewstatepropertybag.asp..cependant pour le moment j'ai un gros bug bizard
-> les settings des dossiers peuvent être supprimés si le dossier n'est pas visité souvent...
-> j'ai un doute sur la portabilité "autre que XP" de cette API...
-> programmation shell = C++...cela dit on peut mettre des extern "C" sur une fonction perso appelée par le code C...

ShareVB
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
20
salut,

on peut récupérer un IShellFolder pour le dossier , demander un Ishellview avec CreateViewObject puis créer la fenêtre avec Create...Window...puis envoyer le message :
// get or set the FOLDERSETTINGS for a view
// wParam: BOOL TRUE -> set to view info buffer, FALSE -> get view info buffer
// lParam: LPFOLDERSETTINGS buffer to get or set view info
#define CWM_GETSETCURRENTINFO (WM_USER + 4)
#define FileCabinet_GetSetCurrentInfo(_hwnd, _bSet, _lpfs) SendMessage(_hwnd, CWM_GETSETCURRENTINFO, (WPARAM)(_bSet), (LPARAM)(LPFOLDERSETTINGS)_lpfs)

puis faire un saveviewstate sur le ishellview...mais pas tester...

on peut aussi customizer un dossier :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_extending/custom.asp
http://www.codeguru.com/cpp/com-tech/shell/article.php/c4517/

ShareVB
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
3
Salut,

Deja merci pour ta reponse,

Google ne ma pas trop aider sur le coup, mais j'ai put retirer ces infos:

IShellFolder *pDesktop;
SHGetDesktopFolder(&pDesktop);

La msdn ne dit rien sur SHGetDesktopFolder, ni sur une fonction similaire où ont pourais donner le path du dossier.

CreateViewObject > c'est appler à la façon C++, hors je code en C, il y aurais un exemple avec ça sur IShellFolder ?

Pour le reste je devrais pouvoir m'en sortir..

Pour les liens que tu ma donner, je trouve la methode pas tres attirante sourtout que moi à la base je veux juste modifier l'affichage pour des dossiers precis.

Aurais-tu un exemple pour IShellFolder & Ishellview avec CreateViewObject, pour du C ?

Merci d'avance.
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
3
Pour la visite des dossiers, moi à la base je cherche juste à ce que les Thumbs.db ne ce recreer pas, dans tout les dossiers de mon dossier et dans le dossier où ce trouve mon dossier.

Les Thumbs c'est nouveau dans le monde Windows, ça as dut apparaitre sur Windows XP au debut. La msdn precise pourtout; Minimum operating systems Windows 2000

Je vais voir de plus pres avec la fonction que tu ma dit, elle sembre etre faite pour, et voir les extern "C" { } j'ai deja lut ça quelque part.

Merci pour ton aide !