ウィンドウが最小化されたことを検知するにはウィンドウメッセージを使います。
#define WM_SIZE 5
#define WM_SYSCOMMAND 0x0112
oncmd gosub *syscom,WM_SYSCOMMAND
oncmd gosub *size,WM_SIZE
stop
*syscom
uCmdType=wparam&0xFFF0
if uCmdType==0xF020{
mes "最小化ボタンが押されました"
}
return
*size
if wparam==1{
mes "最小化されました"
}else{
mes "たぶん最小化から戻りました"
}
return
最小化時にくるメッセージには2種類あり、ウィンドウ右上の最小化ボタンが押された時にはWM_SYSCOMMANDが、実際に最小化されたときにはWM_SIZEが来ます。
MinimizeAllでの最小化時はWM_SYSCOMMANDが来ないので、ユーザーが自分で最小化したのと区別できます。
最小化を阻止するのは難しいので、最小化されたらWM_SYSCOMMANDを自分に送ってウィンドウを戻せばいいかと思います。
ただしこの方法はMinimizeAllには対応できますが、WM_SYSCOMMANDを送ってくるようなソフトには対応できないので注意しましょう。
WM_SYSCOMMANDを送ってくるソフトにも対応したければ、ウィンドウのシステムメニューから最小化を削除した上で独自の最小化ボタンを用意し、普段はWM_SIZEを監視して最小化されたら戻すようにし、ユーザーが最小化ボタンを押した時だけ最小化されても戻らないようにするといいかもしれません。