if khKeyCode == 9 & khKeyCode == 18 : return 1
としていますが、khKeyCode が同時に 9 と 18 になることはありません。
khStat を監視してAltの押し離しを記憶しても良いかもしれませんが、
getkeyを使ってAltが押されているかを検知してしまうと楽でしょう。
getkey altDown, 18 //Altの押し離し
if khKeyCode == 9 & altDown == 1 : return 1
ただし、これだけではAlt+TABを無効化することはできません。
Alt+TABを無効化するには、より低層のローレベルキーフックを使う必要があります。(Windowsキー等の無効化も)
参考:
http://7ujm.net/C++/Hook3.html
つーささんのkeyhookでは、ローレベルキーフックも使えるみたいで
khHookLL
でフックをセットしてあげれば良いそうです。
纏めると下記のようになります。
#include "keyhook.hsp"
;//フックをセット
khHookLL *onKeyHook
if stat=0 : dialog "フック失敗" : end
stop
*onKeyHook
title "Code:"+ khKeyCode + " Name:" +khKeyName + " Stat:" + khStat
getkey altDown, 18 //Altの押し離し
if khKeyCode == 9 & altDown == 1 : return 1
return
ローレベルキーフックでは、khKeyCode や khStat に入る数値が少し異なりますので注意して下さい。
(例えば、khKeyCode : 左Alt=164、右Alt=165 のようになります。)