Avatar billede krismort Nybegynder
18. september 2002 - 22:53 Der er 6 kommentarer og
2 løsninger

ikoner på skrivebord

Jeg har tænkt mig at lave et program som sorterer ikoner på skrivebordet efter nogen bestemte regelsæt... er der en "windows expert" som kan hjælpe mig med hvordan jeg skifter position på ikonerne.. så vidt jeg ved er skrivebordet bare en kontrol ... ikke ?

Kristian
Avatar billede benderfx Nybegynder
18. september 2002 - 23:01 #1
noget ai eller hvad tænker du på
Avatar billede benderfx Nybegynder
18. september 2002 - 23:05 #2
eany way smutter nu hygge
Avatar billede mbulow Nybegynder
19. september 2002 - 00:23 #3
Nu er det godt nok ikke videre pænt lavet (Læs: Ren spaghetikode ;) hehe)
Meeen... Det her lille program flytter dit ikon med index 0, til koordinaterne 100, 100
(I mit tilfælde skraldespanden)

PS! Jeg bruger makroen ListView_SetItemPosition, der findes godt nok en der hedder ListView_SetItemPosition32, men med de samme koordinater forsvandt ikonet helt fra skrivebordet, så det gad jeg ikke lige rode mere med.


ULTRA-KOMPAKT KODE:
-------------------

#include <commctrl.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){
    HWND hProgman        = FindWindowEx(NULL, NULL, TEXT("Progman"), TEXT("Program Manager"));
    HWND hShellDllDefView = FindWindowEx(hProgman, NULL, TEXT("SHELLDLL_DefView"), TEXT(""));
    HWND hSysListView32  = FindWindowEx(hShellDllDefView, NULL, TEXT("SysListView32"), TEXT("FolderView"));
    ListView_SetItemPosition(hSysListView32, 0, 100, 100);
}
Avatar billede lasse_buck Nybegynder
19. september 2002 - 00:32 #4
Fandt denne beskrivelse af et lille program til at låse desktoppen:
Controlling the Display
The icons and folders on your desktop are rendered and maintained in a ListView control that Explorer creates. When IconLock.exe starts up, it loads LockIcon.dll, which installs a thread hook to wait for a message from Explorer. When a message is received, LockIcon.dll subclasses the Explorer controls SHELLDLL_DefView and ListView so that it can process the required messages. This technique of injecting a DLL into another application's process space is well documented in Jeff Richter's book Advanced Windows (Microsoft Press, ISBN 1-55615-677-4).


Obtaining the position of icons on your (WinNT-based) desktop:
http://www.codeguru.com/net_general/IconOutliner.html

Det her har måske relevans:
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q179904&
Avatar billede mbulow Nybegynder
19. september 2002 - 00:35 #5
Vil forresten også lige advare dig om:
Hvis du har autoarange, eller snap-to-grid på din desktop, så flytter dine ikoner sig godt nok, men lige bagefter bliver de 'snapped' og/eller autoaranged, så husk lige at slå det fra hvis du vil ha fuldstændig kontrol over dem.

PUHA! Sparer godt nok lidt på , og .'erne idag :)
Avatar billede oink Nybegynder
19. september 2002 - 16:28 #6
mbulow>> Hvordan fandt du de oplysninger(Progman og program manager)? Jeg prøvede med spy++, men jeg kunne ik reddi finde noget.......
Avatar billede oink Nybegynder
19. september 2002 - 16:32 #7
Jah, der var jeg nok lidt for hurtig.. Har fundet det(med spy++ :))
Avatar billede mbulow Nybegynder
19. september 2002 - 17:30 #8
Det var NETOP Spy++ jeg selv brugte til at finde frem til den løsning ;) hehehe
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester