Avatar billede mousedreamer Nybegynder
16. december 2010 - 19:37 Der er 1 kommentar og
1 løsning

Fang komponent med et koordinatsæt

Hej, jeg vil enormt gerne kunne fange en komponent på skærmen, en knap, en tab, en dropdown, en radiobutton eller en checkbox, og stille det ganske enkle spørgsmål, om det er noget som svarer på at blive klikket på. Hvis det ikke er muligt, så om det er en komponent af en type, som er beregnet til at man klikker på den. Jeg kan fange en komponent med 

      static extern IntPtr WindowFromPoint(POINTAPI pt);

og se dens klasse med

      static extern int GetClassName(IntPtr hWnd, System.Text.StringBuilder lpClassName, int nMaxCount);

Men jeg kan ikke fange klassen på en treenode i et treeview, og andre child komponenter i en komponent.


Helt præcis har jeg brug for koden til, om der på koordinaterne x,y opholder sig noget, som svarer på et klik.

Input: x,y

output: boolean - Er der noget her som kan klikkes på

Koden skal kunne bruges i mit c# projekt, men det er jo mere c++ det her, det er derfor jeg poster i dette forum.
Avatar billede mousedreamer Nybegynder
16. december 2010 - 22:05 #1
Koden jeg fors'ger mig med nu, er den nedenstående. Iflg msn docs
giver ChildWindowFromPointEx lige det som jeg mener jeg leder efter, men det virker bare ikke. Jeg får "N/A" på næsten alt. Hvis jeg kun tager klassenavnet på parent windowet virker det fint, bare ikke for knapper og mange andre child controls.


            POINTAPI papi = new POINTAPI();
            papi.x = p.X;
            papi.y = p.Y;
           
            IntPtr lastChild = ChildWindowFromPointEx(WindowFromPoint(papi), papi, 0);

            int nRet;
            System.Text.StringBuilder ClassName = new System.Text.StringBuilder(100);
            nRet = GetClassName(lastChild, ClassName, ClassName.Capacity);

            string userInfo = "";

            if (nRet != 0)
                userInfo = ClassName.ToString();
            else
                userInfo = "n/a";
Avatar billede mousedreamer Nybegynder
03. oktober 2011 - 07:51 #2
Det er vist mere et projekt end et spørgsmål det her.
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