ホットキーの上書きと無効化

レジストリを次のように変更することでWin+LWin+U以外のすべてのWindowsのホットキーを無効にすることができます(全てののOSで動作するはずですが、おそらく再起動が必要です):

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
NoWinKeys REG_DWORD 0x00000001 (1)

しかし、それらをすべて無効にするだけでなくそれ以上のことをしたいのであれば、続きを読んでください。

他のアプリケーションのホットキーは、スクリプトのアクションに割り当てるだけで、上書きしたり無効にしたりすることができます。この機能の最も一般的な使い方は、ウィンドウズ自体に組み込まれているホットキーを変更することです。例えば、Win+E(ウィンドウズ・エクスプローラーを起動するショートカットキー)に他の動作をさせたい場合は、こうします:

#e::MsgBox "This hotkey is now owned by the script."

次の例では、RUNウィンドウを開くのに使われるWin+Rホットキーが完全に無効になっています:

#r::return

同様に、両方のWinを無効にするには、次のようにします:

LWin::return
RWin::return

アプリケーションの非グローバルホットキー(つまり、そのアプリケーションがアクティブウィンドウであるときにのみ機能するショートカットキー)を無効にしたり変更したりするには、次の例を参考にしてください。Ctrl+P(印刷)をメモ帳でのみ無効にし、他のすべての種類のウィンドウでは有効なままにしておきます:

$^p::
{
	if WinActive("ahk_class Notepad")
		return  ; つまり、何もしない。Ctrl+Pは、メモ帳では何もしません。
	Send "^p"
}

上記の例では、ホットキーがアクティブにならずに「自分自身を送信」できるように、$接頭辞が必要です(そうしないと、無限ループに関する警告ダイアログが表示されます)。こちらも参照のしてください:文脈依存のホットキー

上記の例を「Override.ahk」のような新しいテキストファイルにコピーし、そのファイルを起動すますることで試すことができます。または、ブラウザがサポートしている場合は、マウスをコードブロックの上に置いたときにコードブロックの右上に表示されるボタンをクリックして、スクリプトファイルとしてダウンロードできます。