Uchwyt do pulpitu

0

Mam takie dwa kawałki kodu:

Pulpit:=GetDesktopWindow;

i

pol:=PMOUSEHOOKSTRUCT(LParam).pt;
pom:=WindowFromPoint(pol);
AOkno:=GetAncestor(pom,GA_ROOTOWNER);

I jak kliknę na pulpit to uchwyty mi się nie zgadzają. Jak temu zaradzić?

1

bo okno pulpitu jest na samej gorze a na nim cala reszta, jak klikasz na "pulpit" to tak naprawde klikasz na miejsce gdzie sa ikonki a to juz okno - klasa SysListView32.

w skrocie
#3...Desktop
+-------Progman
+--------SHELLDLL_DefView
+-----------SysListView32 (pulpit "pulpit" che che)

a wiec aby znalezc uchwyt pulpitu nalezy wybrac dowolne okno i szukac tak dlaugo az natrafi sie na okno bez rodzica

0

Dokładnie mi chodzi o to "klikalne" okno pulpitu (czyli tam gdzie mycha klika).
Z tego co wyczytałem w msdn to funkcja GetAncestor zwraca "najstarszego" rodzica/właściciela. I teraz jeśli będę próbował otrzymać uchwyt pulpitu w ten sposób:

Pulpit:=GetDesktopWindow;
Pulpit:=GetAncestor(Pulpit,GA_ROOTOWNER);

to otrzymam uchwyt 0 (prawdopodobnie funkcja zwórciła NULL). Ale przy zastosowaniu:

Pulpit:=WindowFromPoint(ptPulpit); //ptPulpit:TPoint i pokazuje 0,0
Pulpit:=GetAncestor(Pulpit,GA_ROOTOWNER);
// metodę tę stosuje także przy rozróżnianiu klikniętego okna

to otrzymam jakiś tam uchwyt zgodny z uchwytem gdy kliknę na pulpit. Wynika z tego, że nic nie rozumiem :/

1 użytkowników online, w tym zalogowanych: 0, gości: 1