Desktop gegevens

  • Onderwerp starter Onderwerp starter djenn
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

djenn

Gebruiker
Lid geworden
2 sep 2006
Berichten
68
Ik wil een applicatie maken dat onder andere de icoontjes op de desktop (eventueel) kan verplaatsen.
Zoals bekent slaat windows de gegevens die op de desktop staan op in de map "\gebruikers\naam\Desktop", maar dat zijn alleen de gegevens die betrekking hebben op de programma's of url's die te maken hebben met het icoontje op de desktop.
Maar waar slaat windows nu de posities van van die icoontjes op?
ik heb ze in de registry niet kunnen vinden, zelfs niet met een systeem tracer.
Heeft iemand een idee waar ik dat zou kunnen vinden ?
 
Ze worden als het goed is in het verborgen bestand 'desktop.ini' opgeslagen, dat staat op je bureaublad.
 
Inmiddels heb een site gevonden waar iets meer informatie te vinden is over dit onderwerp.
Ik heb het even vluchtig bekeken, en het blijkt dat de posities in een listview staan opgeslagen.
Ik ga dat vandaag beter bekijken, en kom er nog op terug, wellicht zijn er meer geinteresseerden in dit onderwerp.
 
Het gaat toch om de snelkoppelingen van programma's, en de posities daarvan, niet om de plaatjes ervan?
 
Het gaat om alle pictogrammen op het bureaublad, dat zijn niet per definitie snelkoppelingen.
Het gaat om de positie en het plaatje.
Maar ik kan jullie wel vertellen dat windows het niet makkelijk maakt om e.a. te doen.
Onderstaand stukje vond ik op een msdn forum, ik laat dit even zien om aan te geven dat het wat haken en ogen heeft allemaal.

Zhi-Xin Ye zei:
First, actually the desktop is a large ListView, if you use SPY++ to see the handle of the desktop, you will find that there is a window with the title Program Manager, under which is another window of SHELLDLL_DefView type without title, below it is a window of SysListView32 type with caption of FolderView. So, we can use the FindWindow and FindWindowEx API to get the ListView which host the desktop icons, and use SendMessage API to send LVM_GETITEMPOSITION message to get the icon positions, however, since each process has its own memory, we can't steal program's memory directly from one process to another, we need some trick, we can allocate memory in the address space of the desktop ListView and read from that, this can be done by VirtualAllocEx() API. Now, the problem is to get the process handle of the ListView, we can use GetWindowThreadProcessId API to get the PID of the desktop window process, and use OpenProcess() to get a handle to the process
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan