windows - Opdag om museknappen allerede er trykket inden formular viser

Indlæg af Hanne Mølgaard Plasc

Problem



Hvis der trykkes på en museknap, og der vises et vindue, vil vinduet modtage MouseUp-hændelsen, når museknappen slippes.


Er det muligt at opdage, når vinduet er vist, om en museknap allerede er presset eller ej?

Bedste reference


Jeg ville prøve dette:


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;

Andre referencer 1


For at besvare dit spørgsmål direkte kan du teste for museknapptilstand med GetKeyState eller GetAsyncKeyState. Den virtuelle nøglekode du har brug for, er VK\_LBUTTON. [10] [11]


Forskellen mellem disse er, at GetKeyState rapporterer staten på det tidspunkt, hvor den aktuelt aktive købesked blev sendt til din kø. På den anden side giver GetAsynchKeyState dig staten på det øjeblik du kalder GetAsynchKeyState.


Fra dokumentationen af ​​GetKeyState: [12]



  Nøgle status returneret fra denne funktion ændres som en tråd, der læser nøglebeskeder fra dens meddelelseskø. Status afspejler ikke tilstanden for afbrydelsesniveau, der er forbundet med hardwaren. Brug funktionen GetAsyncKeyState til at hente disse oplysninger.
  En applikation kalder GetKeyState som svar på en tastatur-input-besked. Denne funktion henter tilstanden af ​​nøglen, når indgangsmeddelelsen blev genereret.



Jeg formoder, at du skal bruge GetKeyState, men jeg kan ikke være 100\% sikker på, fordi jeg faktisk ikke ved, hvad du forsøger at opnå med disse oplysninger.