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

Signaler
Messages postés
167
Date d'inscription
mardi 27 juillet 2004
Statut
Membre
Dernière intervention
31 août 2011
-
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
-
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>

4 réponses

Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
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
Messages postés
167
Date d'inscription
mardi 27 juillet 2004
Statut
Membre
Dernière intervention
31 août 2011

Je te remercie, très gentil et très rapide

Pseudo :: PyroFrissons ou Mr Blagues
<hints id="hah_hints"></hints>
Messages postés
167
Date d'inscription
mardi 27 juillet 2004
Statut
Membre
Dernière intervention
31 août 2011

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>
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
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