Use CreateProcess instead of ShellExecute, then you can use the process handle you've got with WaitForInputIdle (or something like that) which locks you app until WinAmp has loaded.