14/03/2008, 18:28
|
| | Fecha de Ingreso: marzo-2008
Mensajes: 22
Antigüedad: 16 años, 9 meses Puntos: 1 | |
Re: Obtener handle de botón externo /*
Esto es lo que creo que estás necesitando, espero que este código te sea util
Lo he testeado y funciona (Lo testee con la calculadora de Windows)
*/
#include <tchar.h>
#include <windows.h>
HWND MyFindWindow(HWND hWnd, PTSTR szClassName, PTSTR szWindowName)
{
HWND hWndFound;
static TCHAR szTempBuffer[40];
if(hWnd == NULL)
return NULL;
if(hWnd != NULL)
{
for( ; hWnd != NULL; hWnd = GetWindow(hWnd, GW_HWNDNEXT))
{
if(NULL != (hWndFound = (MyFindWindow(GetWindow(hWnd, GW_CHILD), szClassName, szWindowName))))
{
return hWndFound;
}
GetClassName(hWnd, szTempBuffer, 40);
if(0 == lstrcmp(szTempBuffer, szClassName)) // Es sensitivo a mayúsculas y minúsculas
{
GetWindowText(hWnd, szTempBuffer, 40);
if(0 == lstrcmp(szTempBuffer, szWindowName)) // Aca también es sensitivo a mayúsculas y minúsculas
{
return hWnd;
}
}
}
}
return NULL;
}
HWND MyFindWindowEx(PTSTR szAppClassName, PTSTR szClassName, PTSTR szWindowName)
{
HWND hWnd;
TCHAR szTempBuffer[40];
for(hWnd = GetWindow(GetDesktopWindow(), GW_CHILD); hWnd != NULL; hWnd = GetWindow(hWnd, GW_HWNDNEXT))
{
if(GetClassName(hWnd, szTempBuffer, 40))
{
if(0 == lstrcmpi(szTempBuffer, szAppClassName)) // Si se encontro la aplicación principal,
// entonces buscar el control específico
{
return MyFindWindow(GetWindow(hWnd, GW_CHILD), szClassName, szWindowName);
}
}
}
return NULL;
}
void main(void)
{
HWND hWndButton = MyFindWindowEx("SciCalc", "Button", "7");
if(hWndButton == NULL)
{
MessageBox(0, "Ventana no encontrada", "", MB_OK);
}
else
{
// Trabajar con el handle
EnableWindow(hWndButton, FALSE);
}
} |