Avatar billede segato Nybegynder
25. april 2006 - 11:10 Der er 1 løsning

FindWindow på under kontroller!

Hej folks!

Jeg er ved at lave et lille stump kode hvor man skal kunne udpege nogle knapper, og så skal mit kode herefter kunne sende beskeder til de udpeget kontroller.

Jeg kan få FindWindow til at virke på hele vinduer men ikke childs/kontroller. Og det er så her i kommer ind i billedet :D

Hvad gør jeg galt, se evt nedenstående kode.


        [DllImport("user32.dll")]
        static extern int GetClassName(IntPtr hWnd, System.Text.StringBuilder lpClassName,
            int nMaxCount);

       
        [DllImport("user32.dll", EntryPoint = "WindowFromPoint")]
        static public extern IntPtr WindowFromPoint(Point Point);         

        [DllImport("user32.dll")]
        private static extern int SendMessage(    IntPtr handle, UInt32    message,
            int wParam,
            int lParam);

        [DllImport("User32.dll")]
        public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);
   
        [DllImport("user32.dll")]
        public static extern IntPtr FindWindow(string lpClassName,string lpWindowName);

        [DllImport("user32.dll", SetLastError = true)]
        public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className,  IntPtr windowTitle);

        private const UInt32 WM_LBUTTONDOWN = 0x201;
        private const UInt32 WM_LBUTTONUP = 0x202;

       
        private void button2_Click(object sender, System.EventArgs e)
        {           
            IntPtr p = WindowFromPoint(Cursor.Position);
           
            string className = GetClassName(p);
            string windowText = GetWindowText(p);

            IntPtr i = FindWindow( className,windowText);
            IntPtr i2 = FindWindowEx(IntPtr.Zero, IntPtr.Zero, className,  IntPtr.Zero);

            MessageBox.Show(className);
        }

        private string GetWindowText(IntPtr hWnd)
        {           
            StringBuilder sb = new StringBuilder(256);                           
            GetWindowText(hWnd, sb, 256);                               
            return sb.ToString();
        }

        private string GetClassName(IntPtr hWnd)
        {           
            StringBuilder sb = new StringBuilder(256);
            GetClassName(hWnd,sb,256);                           
            return sb.ToString();
        }
Avatar billede segato Nybegynder
27. april 2006 - 14:48 #1
Fandt svaret
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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