WinExec相当于DOS年代C语言里的system(...),VC为了保持与16位程序的兼容,把system改了个名字,就成了WinExec,所以只能执行标准的执行文件,如果你执行WinExec("Temp.txt"),那是行不通的。在32位的世界里推荐CreateProcess,这个函数的参数非常多。至于那个ShellExecutEx,顾名思义,通过Windows的Shell启动一个东西,这就不一定是程序了,可以使所有在系统中注册过的有关联程序的东西,比如你可以用这个函数“执行”一个txt文件。
至于WinExec与SheelExecute的参数,参见MSDN。