【发布时间】:2015-07-19 14:04:38
【问题描述】:
我需要执行另一个应用程序,我想知道是否有理由使用WinExec 而不是ShellExecute,反之亦然。
两种方法有什么区别?有没有应该首选的?
【问题讨论】:
-
要执行应用程序使用
CreateProcess,而不是ShellExecute。忘记WinExec,因为它已经被弃用了很长时间。
标签: winapi
我需要执行另一个应用程序,我想知道是否有理由使用WinExec 而不是ShellExecute,反之亦然。
两种方法有什么区别?有没有应该首选的?
【问题讨论】:
CreateProcess,而不是ShellExecute。忘记WinExec,因为它已经被弃用了很长时间。
标签: winapi
WinExec 已被长期弃用,仅出于向后兼容性的原因而保留。它用于启动可执行文件。不要使用它,因为它已被弃用。如文档中所述:
提供此功能只是为了与 16 位 Windows 兼容。应用程序应使用 CreateProcess 函数。
ShellExecute 没有被弃用,但也不应该使用,因为它不能正确报告错误。
使用ShellExecuteEx 执行shell 动词。
如果您想创建一个进程,并且您知道可执行文件名,请使用CreateProcess。除非您需要执行提升,在这种情况下您需要 ShellExecuteEx 和 runas 动词。
【讨论】:
WinExec。我已经解释了何时使用 SEE 以及何时使用 CP。