【问题标题】:Which are the differences between WinExec and ShellExecute?WinExec 和 ShellExecute 有哪些区别?
【发布时间】:2015-07-19 14:04:38
【问题描述】:

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

两种方法有什么区别?有没有应该首选的?

【问题讨论】:

  • 要执行应用程序使用CreateProcess,而不是ShellExecute。忘记WinExec,因为它已经被弃用了很长时间。

标签: winapi


【解决方案1】:

WinExec 已被长期弃用,仅出于向后兼容性的原因而保留。它用于启动可执行文件。不要使用它,因为它已被弃用。如文档中所述:

提供此功能只是为了与 16 位 Windows 兼容。应用程序应使用 CreateProcess 函数。

ShellExecute 没有被弃用,但也不应该使用,因为它不能正确报告错误。

使用ShellExecuteEx 执行shell 动词。

如果您想创建一个进程,并且您知道可执行文件名,请使用CreateProcess。除非您需要执行提升,在这种情况下您需要 ShellExecuteExrunas 动词。

【讨论】:

  • 如果不知道可执行文件名,就不能使用winexec。这两个功能不等价。
  • @Sertac 我们根本不会打电话给WinExec。我已经解释了何时使用 SEE 以及何时使用 CP。
  • 没关系。但这个问题值得一提,这就是它要问的问题。
  • @Sertac 我已经相应地扩展了答案
  • @DavidHeffernan:感谢您的澄清,现在一切都清楚了。
猜你喜欢
  • 2012-05-31
  • 2017-01-03
  • 2019-06-12
  • 2021-12-14
  • 1970-01-01
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
  • 2010-11-14
相关资源
最近更新 更多