AutoHotkey Cookbook

TL;DR
$!F4::
    ;prevent Alt-F4 from closing Notepad++ [0]
    IfWinActive ahk_class Notepad++
    {
        return
    }
    Send, !{F4}
return
Alt-F4 [ !F4 ] may be used to close a program. If you want that NOT to apply to a particular program, e.g. Notepad++:
#SingleInstance force
SetTitleMatchMode, 2
RemoveToolTip20:
    SetTimer, RemoveToolTip, Off
    ToolTip,,,,20
return

halfWidth := (A_ScreenWidth / 2) 
halfHeight:= (A_ScreenHeight / 2)

$!F4::
    ;prevent Alt-F4 from closing Notepad++ [0]
    IfWinActive ahk_class Notepad++
    {
        msg:="You said to leave Notepad++ open"
        Tooltip, %msg%, %halfWidth%, %halfHeight%, 20
        SetTimer, RemoveToolTip20, 800
        return ; take no further action
    }
    ;if Firefox Exists then do NOT close ANY window
    else IfWinExists ahk_class Firefox 
    {
        msg := "Click the red X in the top right if you really want Firefox closed"
        Tooltip, %msg%, ( halfWidth / 8 ), %halfHeight%, 20
        SetTimer, RemoveToolTip20, 800
        return ; ignore Alt-F4
    }else{
        msg := "I'm melting..."
        Tooltip, %msg%, %halfWidth%, %halfHeight%, 20
        SetTimer, RemoveToolTip20, 800
        Send, !{F4} ; actually send Alt-F4 for all other programs
    }
return
        
[0] The Title of Notepad++ may change depending on which file is open. For other programs that have a fixed title you can use:
IfWinActive, Open Database - NewDatabase.kdbx
{
    return
}
        
KeePass always has, (for this author) the fixed title, (while opening) of "Open Database - NewDatabase.kdbx" so we can skip the ahk_class

N.B.

IfWinActive only considered the window that you are looking at.
IfWinExists changes the behavior on a window that you may have Active or may be minimised.