Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Verificar si un HWND esta con focus? (https://www.clubdelphi.com/foros/showthread.php?t=66846)

Alejo15x 15-03-2010 23:21:14

Verificar si un HWND esta con focus?
 
Hola!

Supongo que esto iria en la API, ya que un HWND es un api. Creo :confused: bueno, tengo el siguiente codigo:
para verificar si una HWND esta arriva de todas, osea que la estamos usando...(Focus) >.<
Código Delphi [-]
procedure VerificarVentanas();
begin
 HVentana := FindWindow( 'TibiaClient', nil );
{ Si esta con focus la HVentana que... }
{
  ShowWindow( Application.Handle, SW_SHOW );
  SetWindowLong( Handle, GWL_EXSTYLE,
      GetWindowLong(Application.Handle, GWL_EXSTYLE) or
      WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
  ShowWindow( Application.Handle, SW_HIDE );
}
{ Si no esta con focus la HVentana que... }
// Application.ShowMainForm := false;
end;

Espero me entiendan, un saludo!

escafandra 16-03-2010 11:58:29

El hecho de que una ventana esté en primer plano no implica que tenga el foco.

La forma de verificar con la API, si una ventana tiene o no el foco es meduante GetFocus que retorna el HWND (Handle) de la ventana que tiene en ese momento el foco. Si lo comparamos con el de nuestra ventana sabremos si tenemos o no el foco.

Desde delphi, sería mas sencillo usar la propiedad focused.

Ten en cuenta que si el foco lo tiene un control, la ventana que lo contiene dará que no tiene el foco. Sólo una ventana puede tener el foco. En ese caso, si lo que te interesa es saber si tu formulario tiene el foco, basta comparar si el Parent del contorl que lo tiene es tu formulario.


Saludos.


La franja horaria es GMT +2. Ahora son las 17:59:43.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi