Developer's Diary

19 mayo, 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:

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#

using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace FindWindow
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

[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, string windowTitle);

private void BtnNombre_Click(object sender, EventArgs e)
{
IntPtr pr = FindWindow(null, "Formulario");
if (pr != IntPtr.Zero)
{
MessageBox.Show("Encontrado Handle: " + pr.ToString());
IntPtr hijo = FindWindowEx(pr, IntPtr.Zero, null, "Nombre");
if (hijo != IntPtr.Zero)
{
MessageBox.Show("Encontrado Handle: " + hijo.ToString());
}
}
}

private void btnSalir_Click(object sender, EventArgs e)
{
this.Close();
}
}
}

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

Anuncios

Dejar un comentario »

Aún no hay comentarios.

RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: