Windows2000 / WindowsXP で動作確認しています。<br />
以下のサンプルコードを実行すると、15秒間キーボードとマウスを受け付けなくなります。<br />
以下のサンプルは、USER32.DLL にある BlockInput というエントリポイントの機能を使用しています。<br />
BlockInput は引数に true を与えるとロックを false を与えるとロック解除します。<br />
<pre class="code">
<b>function</b> FuncAvail(Lib, Func: <b>string</b>; <b>var</b> hnd: THandle; <b>var</b> ptr: <b>Pointer</b>): boolean;
<b>begin</b>
  Result := false;
  hnd := 0;
  <b>if</b> LoadLibrary(PChar(Lib)) = 0 <b>then</b>
  <b>begin</b>
    Exit;
  <b>end;</b>
  hnd := GetModuleHandle(PChar(Lib));
  <b>if</b> (hnd &lt;&gt; 0) <b>then</b>
  <b>begin</b>
    ptr := GetProcAddress(hnd, PChar(Func));
    <b>if</b> (ptr &lt;&gt; <b>nil</b>) <b>then</b>
    <b>begin</b>
      Result := true;
    <b>end;</b>
  <b>end</b>;
<b>end</b>;

<b>procedure</b> TForm1.Button1Click(Sender: TObject);
<b>var</b>
  hnd: THandle;
  xBlockInput: <b>function</b>(Block: BOOL): BOOL; <strong>stdcall</strong>;
<b>begin</b>
  <b>if</b> FuncAvail('USER32.DLL', 'BlockInput', hnd, @xBlockInput) <b>then</b>
  <b>begin</b> 
    xBlockInput(<b>true</b>);
    Sleep(15000);         // 15秒 
    xBlockInput(<b>false</b>); 
    FreeLibrary(hnd);
  <b>end</b>;
<b>end</b>;
</pre>