关于winexe、shellexecute、createprocess三个函数的议论

关于winexe、shellexecute、createprocess三个函数的讨论
自己先顶一下吧!先说说我自己的解决方法。
    首先呢,在程序中打开别的程序的话,在window中我知道是有三个函数Winexe、shellexecute(shellexecuteEx)、createprocess。这三个方法网上讲解的资料很多啦。但是呢大家都是相互抄抄,没有新意。以前自己看呢也没有多想,今天自己用的时候,还是发下了很多的不同的。觉得有很多的地方不同,但是因为技术有限,却不知到哪些地方不同望大牛解惑。
    我觉得winexe、shellexecute、shellexecuteEx是一类函数,虽说winexe的功能没有另外两个函数的功能强大。说他们是一类函数的最大原因是他们没有结构用来存储他们新打开进程的信息,我们要操作新打开的进程,就必须从操作系统中去调用相应的API,而最关键是我们在这里调用API就会遇到一些权限之类的问题了(不知在这里理解是否正确关于winexe、shellexecute、createprocess三个函数的议论)。而CreateProcess函数有一个PROCESS_INFORMATION结构体,其中存储了很多关于新打开的进程的信息,这样我们操作新打开的进程就方便很多。
    以上就是我对这几个函数的理解,王给位大牛指正。

------解决方案--------------------
凡是要想了解API函数功能的,最好的资料就是MSDN,通过查阅MSDN可以看出:
ShellExecute是通过COM接口去调用Shell的功能的,在Shell32.dll里实现,而且其作用不仅仅是执行一个程序,基本上你在资源管理器上通过鼠标进行的操作都可以进行。所以功能强,相对效率低(要通过COM调用,低那么一丝丝)。
WinExec是为了兼容Win16时代而留下来的,不建议使用,本身就是去调用CreateProcess,基本上相当于一个宏。
CreateProcess系列函数才是真正的API函数,在Kernel32.dll里实现,功能最丰富,可以全面控制新建的进程。
------解决方案--------------------
个人认为 CreateProcess 比 WinExec 更高级,楼上说到点上了,即 WinExec 内部也是通过 CreateProcess 实现的,但其都只能执行可执行文件。而 ShellExecute 顾名思义外壳执行,相当于你在资源管理器中双击鼠标引起的动作。对任意扩展名的文件都生效,其归根结底是 Windows 通过注册表中查找到对应的关联以确定其可执行文件及其参数,最终还是调用 CreateProcess 函数来实现的。