Position des icônes sur le bureau [Résolu]

Messages postés
168
Date d'inscription
mardi 27 juillet 2004
Dernière intervention
31 août 2011
- - Dernière réponse : TheSaib
Messages postés
2369
Date d'inscription
mardi 17 avril 2001
Dernière intervention
26 décembre 2007
- 2 nov. 2007 à 14:55
Salut,

Je débute en Csharp mais je suis quand même un peu dedans, je suis sur un petit projet que les programmeurs confirmés seraient probablement faire sans problème!

En fait, je cache les icons du bureau (pour le moment avec le registre --> pas cool) et j'ai fait un control qui fera mon fichier.
Donc tout est bien rangé mais je ne sais pas comment je pourrais récupérer la position des icônes du bureau pour que l'utilisateur ne soit pas obligé de tout remettre par lui même!

Il me suffit d'un code qui me récupère ces informations pour y arriver mais moi et les API, c'est pas mon truc (si cela fonctionne avec API)!!

Merci d'avance

Pseudo :: PyroFrissons ou Mr Blagues
<hints id="hah_hints"></hints>
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
2369
Date d'inscription
mardi 17 avril 2001
Dernière intervention
26 décembre 2007
3
Merci
Tu fais un SendMessage sur le handle du bureau avec LVM_GETTITEMCOUNT comme paramètre ensuite tu boucle sur le nombre d'éléments en faisant un SendMessage avec LVM_GETITEMPOSITION en paramètre sur le handle du bureau .

Il te reste  pour obtenir les coordonnées à faire un CopyMemory de ton pointeur lparam.



::|The S@ib|::
MVP C#.NET

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 105 internautes nous ont dit merci ce mois-ci

Commenter la réponse de TheSaib
Messages postés
168
Date d'inscription
mardi 27 juillet 2004
Dernière intervention
31 août 2011
0
Merci
Je te remercie, très gentil et très rapide

Pseudo :: PyroFrissons ou Mr Blagues
<hints id="hah_hints"></hints>
Commenter la réponse de alvinp
Messages postés
168
Date d'inscription
mardi 27 juillet 2004
Dernière intervention
31 août 2011
0
Merci
Je suis arrivé à avoir le handle mais le SendMessage qui renvoi le nombre d'icônes me donne tout le temps 0!

Voici mon code ::
int ItemText = 0;
int ItemPos = 0;
IntPtr hwnd = FindWindowEx(IntPtr.Zero, IntPtr.Zero, "ProgMan", "Program Manager");
if (hwnd != IntPtr.Zero)
{
    int ItemCount = SendMessage(hwnd, LVM_GETITEMCOUNT, 0, 0);
    MessageBox.Show("Handle :: " + hwnd.ToString() + " avec " + ItemCount + " icônes!");
    for(int i = 0; i < ItemCount; i++)
    {
        SendMessage(hwnd, LVM_GETITEMTEXT, i, ItemText);
        SendMessage(hwnd, LVM_GETITEMPOSITION, i, ItemPos);
        MessageBox.Show(hwnd.ToString() + " // n°" + i + " : " + ItemText + " de position : " + ItemPos);
    }
}else{
    MessageBox.Show("Handle du bureau détaché!");
    Application.Exit();
}
Fin du code

Aidez-moi à comprendre mon erreur!

Pseudo :: PyroFrissons ou Mr Blagues
<hints id="hah_hints"></hints>
Commenter la réponse de alvinp
Messages postés
2369
Date d'inscription
mardi 17 avril 2001
Dernière intervention
26 décembre 2007
0
Merci
ton handle ne pointe pas vers la bonne liste :




IntPtr hwnd= FindWindow("progman", null


);
hwnd= FindWindowEx(hwnd, IntPtr.Zero, "shelldll_defview", null


);
hwnd= FindWindowEx(hwnd, IntPtr.Zero, "syslistview32", null);





int ItemCount = SendMessage(hwnd, LVM_GETITEMCOUNT, 0, IntPtr.Zero);







::|The S@ib|::
MVP C#.NET
Commenter la réponse de TheSaib

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.