22 Votos

Delphi/Lazarus: Obtener Handle de la Ventana bajo el Cursor del Mouse

Pregunta de Invitado | 19/03/2023 a las 17:26

Me gustaría especificar la ventana que se encuentra actualmente bajo el cursor del mouse usando Delphi o Lazarus. Esto debería funcionar en el sistema operativo Windows y debería funcionar en todo el sistema, no solo en mi propia aplicación. Necesito la Handle de esa ventana.

¿Es esto posible de alguna manera? Y si es así, ¿alguien puede decirme cómo hacerlo?

ResponderPositivoNegativo
2Mejor Respuesta2 Votos

En primer lugar, debe determinar la posición actual del mouse. Esto se puede hacer usando la función GetCursorPos(). Después de eso, puede usar la función WindowFromPoint() para especificar la ventana en esta posición.

Aquí hay un ejemplo:

var
  ACursorPos: TPoint;
  AHandle: HWND;
begin

  if GetCursorPos(ACursorPos) then begin

     AHandle := WindowFromPoint(ACursorPos);

     if AHandle <> 0 then begin
        SendMessage(AHandle, ..., ..., ...);
     end;
  end;  

end;

Debido a que ambas funciones pueden fallar, debe implementar condiciones como lo hice en el ejemplo. Solo si está seguro de que la Handle no es 0, eso significa que se encontró una ventana, debe continuar y usar la Handle. En el ejemplo anterior, enviamos un mensaje a la ventana correspondiente.
20/03/2023 a las 17:42

ResponderPositivo Negativo
Responder

Temas Relacionados

Aviso Importante

Por favor tenga en cuenta: Las contribuciones publicadas en askingbox.com son contribuciones de los usuarios y no deben reemplazar el asesoramiento profesional. No son verificados por independientes y no reflejan necesariamente la opinión de askingbox.com. Aprende más.

Participar

Haga su propia pregunta o escriba su propio artículo en askingbox.com. He aquí cómo.