windows - para - Detectar si el botón del ratón ya está presionado antes de que aparezca el formulario
tag music editor (2)
Para responder a su pregunta directamente, puede probar el estado del botón del mouse con GetKeyState
o GetAsyncKeyState
. El código de clave virtual que necesita es VK_LBUTTON
.
La diferencia entre estos es que GetKeyState
informa el estado en el momento en que el mensaje en cola activo actual se publicó en su cola. Por otro lado, GetAsynchKeyState
le da el estado en el instante en que llama a GetAsynchKeyState
.
De la documentación de GetKeyState
:
El estado de la clave devuelto por esta función cambia cuando un hilo lee los mensajes clave de su cola de mensajes. El estado no refleja el estado de nivel de interrupción asociado con el hardware. Utilice la función GetAsyncKeyState para recuperar esa información. Una aplicación llama a GetKeyState en respuesta a un mensaje de entrada del teclado. Esta función recupera el estado de la clave cuando se generó el mensaje de entrada.
Sospecho que deberías usar GetKeyState
pero no puedo estar 100% seguro porque no sé qué intentas lograr con esta información.
Si se presiona un botón del mouse y se muestra una ventana, esa ventana recibirá el evento MouseUp cuando se suelte el botón del mouse.
¿Es posible detectar, una vez que se muestra la ventana, si un botón del mouse ya está presionado o no?
Yo intentaría esto:
procedure TForm1.FormShow(Sender: TObject);
begin
if GetKeyState(VK_LBUTTON) and $8000 <> 0 then
ShowMessage(''Left mouse button is pressed...'')
else
ShowMessage(''Left mouse button is not pressed...'')
end;