WinExec和ShellExecute有哪些区别?

10

我需要执行另一个应用程序,想知道是否有理由使用 WinExec 而不是 ShellExecute 或反之。

这两种方法之间有什么区别?是否应该优先使用其中一种?


使用CreateProcess来执行应用程序,而不是ShellExecute。忘记WinExec,因为它已经过时很长时间了。 - TLama
1个回答

16

WinExec已经被弃用,只为了向后兼容而保留。它用于启动可执行文件。由于其已被弃用,请勿使用。正如文档中所述:

  

此函数仅提供与16位Windows的兼容性。应用程序应使用CreateProcess函数。

ShellExecute没有被弃用,但由于无法正确报告错误,也不应该使用。

使用ShellExecuteEx来执行shell动作。

如果您希望创建进程,并且您知道可执行文件的名称,则使用CreateProcess。除非需要以提升的权限运行,在这种情况下需要使用具有runas动作的ShellExecuteEx


1
如果您不知道可执行文件的名称,就无法使用winexec。这两个函数并不等价。 - Sertac Akyuz
@Sertac,我们根本不会调用WinExec。我已经解释了何时使用SEE和何时使用CP。 - David Heffernan
没问题。但是这个问题值得提到它们之间的差异,这就是问题所在。 - Sertac Akyuz
@Sertac 我已经相应地扩展了答案。 - David Heffernan
@DavidHeffernan:感谢您的澄清,现在一切都清楚了。 - Hwau
@DavidHeffernan ShellExecuteEx 的最合理用途是什么? - İsmail Kocacan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接