Position des icônes sur le bureau

Résolu
alvinp Messages postés 167 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 31 août 2011 - 2 nov. 2007 à 10:48
TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre 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>

4 réponses

TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
2 nov. 2007 à 11:09
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
3
alvinp Messages postés 167 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 31 août 2011
2 nov. 2007 à 12:05
Je te remercie, très gentil et très rapide

Pseudo :: PyroFrissons ou Mr Blagues
<hints id="hah_hints"></hints>
0
alvinp Messages postés 167 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 31 août 2011
2 nov. 2007 à 13:48
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>
0
TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
2 nov. 2007 à 14:55
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
0
Rejoignez-nous