以下のサンプルコードを実行すると、15秒間キーボードとマウスを受け付けなくなります。
以下のサンプルは、USER32.DLL にある BlockInput というエントリポイントの機能を使用しています。
BlockInput は引数に true を与えるとロックを false を与えるとロック解除します。
function FuncAvail(Lib, Func: string; var hnd: THandle; var ptr: Pointer): boolean; begin Result := false; hnd := 0; if LoadLibrary(PChar(Lib)) = 0 then begin Exit; end; hnd := GetModuleHandle(PChar(Lib)); if (hnd <> 0) then begin ptr := GetProcAddress(hnd, PChar(Func)); if (ptr <> nil) then begin Result := true; end; end; end; procedure TForm1.Button1Click(Sender: TObject); var hnd: THandle; xBlockInput: function(Block: BOOL): BOOL; stdcall; begin if FuncAvail('USER32.DLL', 'BlockInput', hnd, @xBlockInput) then begin xBlockInput(true); Sleep(15000); // 15秒 xBlockInput(false); FreeLibrary(hnd); end; end;