WinExec和ShellExecute之间有哪些区别?

Hwa*_*wau 6 winapi

我需要执行另一个应用程序,我想知道我是否应该使用WinExec而不是ShellExecute反之亦然.

两种方法有哪些区别?是否应该首选?

Dav*_*nan 12

WinExec长期弃用并保留仅出于向后兼容性原因.它用于启动可执行文件.由于其弃用,请勿使用它.如文档中所述:

提供此功能仅用于与16位Windows兼容.应用程序应使用CreateProcess函数.

ShellExecute 不推荐使用,但也不应使用,因为它无法正确报告错误.

使用ShellExecuteEx执行shell动词.

如果您希望创建进程,并且知道可执行文件名,请使用CreateProcess.除非您需要执行提升,否则您需要ShellExecuteEx使用runas动词.