API FindWindowEx « Devthisblog

Devthisblog Desarrollo .net, Diseño Web, Seguridad… Y todo lo que se me vaya ocurriendo…

mayo 19, 2013

API FindWindowEx

Filed under: .net,API,Curso C#,Tips — Etiquetas: , , , — jnavero @ 10:04 am

En el día de hoy os traigo una continuación de lo que empezamos a ver hace mucho tiempo :-).

Aquí os dejo la “Ficha de esta API”

API: FindWindowEx

Tipo de Función: Información sobre ventanas.

Descripción:En esta ocasión le toca a la api de Windows FindWindowEx, esta api es complementaría a la otra y se utiliza para encontrar el manejador (handle) de un objeto dentro de una ventana encontrada previamente con la api FindWindow.

Función: La definición de la función es la siguiente:

 C# | 
 
 copy code |
?

1
HWND WINAPI FindWindowEx(_In_opt_ HWND hwndParent,_In_opt_ HWND hwndChildAfter,_In_opt_ LPCTSTR lpszClass,_In_opt_ LPCTSTR lpszWindow);

Parámetros:

hwndParent: Indica el manejador “Padre” es el que se suele obtener de la api findwindow para recuperar el objeto x (por ejemplo un botón) de la ventana indicada.

hwndChildAfter: Es el manejador de la ventana hija. La búsqueda del control/ventana comenzará con la ventana hija que sigue a la especificada. Si es null esta búsqueda comenzará desde la ventana inicial dada por el parent.

lpszClass: Puntero a cadena de caracteres (Distingue entre mayúsculas y minúsculas). Indica el nombre de la clase a la que hace referencia la ventana.

lpszWindow: Puntero a cadena de caracteres (Distingue entre mayúsculas y minúsculas). Indica el nombre de la ventana propiamente dicho.

Retorna el manejador del objeto buscado (Handle).

Ejemplo: Ejemplo de utilización de la API. (en este caso, al ser parecido al anterior ejemplo, solo pegaré el código aquí. Para hacerlo rápidamente, basta con descargar el código de la api FindWindow y ver la diferencias con respecto a este (que solo son 2).

C#

 C# | 
 
 copy code |
?

01
using System;
02
using System.Runtime.InteropServices;
03
using System.Windows.Forms;
04
 
05
namespace FindWindow
06
{
07
    public partial class Form1 : Form
08
    {
09
        public Form1()
10
        {
11
            InitializeComponent();
12
        }
13
 
14
        [DllImport("USER32.DLL")]
15
        public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
16
 
17
        [DllImport("user32.dll", SetLastError = true)]
18
        public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className, string windowTitle);
19
 
20
        private void BtnNombre_Click(object sender, EventArgs e)
21
        {
22
            IntPtr pr = FindWindow(null, "Formulario");
23
            if (pr != IntPtr.Zero)
24
            {
25
                MessageBox.Show("Encontrado Handle: " + pr.ToString());
26
                IntPtr hijo = FindWindowEx(pr, IntPtr.Zero, null, "Nombre");
27
                if (hijo != IntPtr.Zero)
28
                {
29
                    MessageBox.Show("Encontrado Handle: " + hijo.ToString());
30
                }
31
            }
32
        }
33
 
34
        private void btnSalir_Click(object sender, EventArgs e)
35
        {
36
            this.Close();
37
        }
38
    }
39
}

Aquí concluimos esta API. Hasta la próxima (muy pronto).

No hay comentarios »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress