I have revisited my Windows 2000 API SuperBible,
and it's appear than "ShowWindow does not make sure the window is in the foreground. Use SetWindowPos or SetActiveWindow function to bring a window to the foreground."
Also, there is LockSetForegroundWindow function who
"...disable or enables the calls to the SetForegroundWindow
function for the calling process.
By default, the system automatically enables calls to SetForegroundWindow if the user press the Alt key or takes some
action that causes the system itself to change the foreground window.
This function allows applications to prevent other applications from
making a foreground change that can interrupt its interaction with the user."
Hope this help