MSDN says ".. you must pass a parent HWND with a ShellExecute .." and explains,
The UAC elevation mechanism uses the HWND as part of determining whether the elevation is a background or foreground elevation. If the application is determined to be a background application, the elevation is placed on the taskbar as a blinking button. ..
Be sure to supply your foreground window's handle to ShellExecuteEx
.