Winapi WinExec和ShellExecute之间有哪些区别?
我需要执行另一个应用程序,我想知道是否有理由我应该使用Winapi WinExec和ShellExecute之间有哪些区别?,winapi,Winapi,我需要执行另一个应用程序,我想知道是否有理由我应该使用WinExec而不是ShellExecute,反之亦然 两种方法的区别是什么?是否有一个是首选的?WinExec长期被弃用,仅出于向后兼容的原因而保留。它用于启动可执行文件。不要使用它,因为它不受欢迎。如文件所述: 此功能仅用于与16位Windows兼容。应用程序应使用CreateProcess函数 ShellExecute未被弃用,但也不应使用,因为它无法正确报告错误 使用ShellExecuteEx执行shell谓词 如果希望创建进程,并
WinExec
而不是ShellExecute
,反之亦然
两种方法的区别是什么?是否有一个是首选的?
WinExec
长期被弃用,仅出于向后兼容的原因而保留。它用于启动可执行文件。不要使用它,因为它不受欢迎。如文件所述:
此功能仅用于与16位Windows兼容。应用程序应使用CreateProcess函数
ShellExecute
未被弃用,但也不应使用,因为它无法正确报告错误
使用ShellExecuteEx
执行shell谓词
如果希望创建进程,并且知道可执行文件名,请使用
CreateProcess
。除非您需要执行提升,在这种情况下,您需要使用runas
动词执行ShellExecuteEx
要执行应用程序,请使用CreateProcess
,而不是ShellExecute
。忘记WinExec,因为它已经被弃用很长时间了。如果你不知道可执行文件的名称,你就不能使用WinExec。这两个函数不是等价的。@Sertac我们根本不打算调用WinExec
。我已经解释了何时使用SEE和何时使用CP。没关系。但是这个问题值得一提,这就是它的问题所在。@Sertac我已经扩展了答案accordingly@DavidHeffernan:谢谢你的澄清,现在一切都清楚了。