Delphi - Input eszközök (egér, billentyűzet) átmeneti letiltása

forráskód letöltése
Ha szükségünk lenne arra, hogy egy általunk megadott időre a felhasználói beavatkozást teljes mértékben meggátoljuk, akkor lehetőségünk van arra, hogy letiltsuk az egeret és billentyűzetet is. A mellékelt példaprogram megnyitása előtt a DisableInput.pas-ban lévő komponenst telepítenie kell a Delphi alá.

A függvény, ami a bevezetőben említett funkciót végrehajtja a DisableInput, ami a user32.dll-ben található. Ennek egyetlen paramétere van, ami egy logikai értéket vár. Ez mondja meg, hogy ki, vagy éppen be kell-e kapcsolni az input eszközöket. A függvény nem függeszti fel a program futását, de a készítendő komponens igen, méghozzá az Interval property-ben meghatározott ideig. Az időt milliszekundumban kell megadni. Létrehozunk egy OnEnabled, és egy OnDisabled eseményt, melyek a letiltáskor, illetve az engedélyezéskor következnek be. Az Interval property beállítása után az Execute metódust kell meghívni:
procedure TDisableInput.Execute;
begin
  if Assigned(FOnDisabled) then FOnDisabled(self);
  BlockInput(true);
  Sleep(FInterval);
  BlockInput(false);
  if Assigned(FOnEnabled) then FOnEnabled(self);
end;