BlockInput

キーボードやマウスなどからの入力を無効化・無効化解除する

BlockInput, Mode

Parameters

引数名説明
Mode
On
すべての入力を無効化する
Off
入力を有効にする
Send
SendやSendRawコマンドを実行する際にに自動的に入力ブロックが有効化されるようにする。(2000/XP以外では無意味)
Mouse
MouseMove,MouseClick,MouseClickDragコマンド実行時に自動的に入力ブロックが有効化されるようにする(2000/XP以外では無意味)
SendAndMouse
SendとMouseを同時に設定
Default
SendとMouseの設定をOFFにする
MouseMove
マウスカーソルを移動できなくする
MouseMoveOff
「BlockInput,MouseMove」を解除する

Remarks

このコマンドを使用すれば、AutoHotkeyによる操作自動化の際にユーザーの入力が混ざることによって誤操作が発生することを防げる。

入力を無効化している間は、AutoHotkeyのホットキーも動作しなくなる。
ただし、一部のHookを利用したホットキーは動作する。

このコマンドを実行する瞬間に、修飾キーを押し下げており、入力が無効化されている間に放されると、その修飾キーが押し下げられたままになってしまう。
これを防ぐには、KeyWaitコマンドで修飾キーが放されるのを待ってからBlockInput,Onを実行すればよい。

「BlockInput,MouseMove」が実行されると、マウスフックが有効化される。
それ以降は、スクリプトが常駐状態になり、ExitAppコマンドを実行するまで終了しなくなる。
SusupendコマンドかHotkeyコマンドが実行されるとき、マウスフックが必要なくなっていれば解除される。

スクリプト終了時には自動的に入力は有効に戻される

APIの仕様によりCtrl+Alt+Delを実行すると、入力は有効に戻る。

このコマンドは、OSによって効果に違いがある。

OS 効果
Windows95 効果なし
WindowsNT4(SP6以前) 効果なし
Windows98/Me ユーザーの入力とともに、AutoHotkeyが生成する入力(Send,SendRaw,MouseMove,MouseClick,MouseClickDragなど)も無効化される
WindowsNT4(SP6)/2000/XP ユーザーの入力は無効化されるが、AutoHotekyが生成する入力は有効。


Example(s)

if A_OSVersion <> WIN_98
	if A_OSVersion <> WIN_ME
		BlockInput, on
Run, notepad
WinWaitActive, Untitled - Notepad
Send, {F5} ; pastes time and date
BlockInput, off