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ć?
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ć?
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
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 :/