Ho trovato abbastanza roba in giro per capire come funziona tranne una cosa....
codice:
...
...
...
HINSTANCE ShellExecute(
HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd);
Parameters
hwnd
[in] Handle to a parent window. This window receives any message
boxes that an application produces, such as error reporting.
...
...
Che cos'è hwnd?? In tutti gli esempi viene sostituito da "handle", ma a me non lo accetta.. Ho, per la precisione, incluso shellapi.h al progetto
Sostituito da NULL mi funziona tutto! 
Grazie ancora