var
ll: THandle;
Sperre: function(b: bool): bool; stdcall;
function Laden(var p: Pointer): boolean;
const udll = 'USER32.DLL';
var h: THandle;
begin
p := nil;
result := false;
ll := LoadLibrary(udll);
if ll <> 0 then begin
h := GetModuleHandle(udll);
if h <> 0 then begin
p := GetProcAddress(h, 'BlockInput');
result := p <> nil;
end;
end;
end;
function Blockieren(millisekunden: word; freigeben: boolean): boolean;
var zeit: longword;
begin
result := Laden(@Sperre);
if result then begin
Sperre(True);
zeit := gettickcount + millisekunden;
repeat
if freigeben then application.processmessages;
until gettickcount >= zeit;
Sperre(False);
end;
if ll <> 0 then FreeLibrary(ll)
end;
// Beispielaufruf
procedure TForm1.Button1Click(Sender: TObject);
const
Sperrzeit = 4000;
Weiterlaufen = true;
begin
if not blockieren(Sperrzeit, Weiterlaufen) then showmessage('Fehler');
end;