IContextMenu 处理程序 - 应该使用 ShellExecute 还是 CreateProcess 来调用 InvokeCommand?

问题描述 投票:0回答:1

我为资源管理器中的上下文菜单添加了一个处理程序,以有条件地显示项目。 我现在的问题是,当到了

InvokeCommand
时,我应该使用
ShellExecute
来运行需要运行的.exe,还是应该使用
CreateProcess()
方法?

基本上 Windows 使用静态条目的方式就是我想要复制的。

蒂亚!!

winapi com windows-shell
1个回答
0
投票

ShellExecute
可以做两件事
CreateProcess
不能:

  1. 启动 .exe 和 .cmd/.bat 以外的文件。
  2. UAC 提升在清单中标记为 RequireAdministrator/Highest 的应用程序。

CreateProcess
可以为子进程设置一些
ShellExecute
无法设置的高级选项(处理继承、调试和属性列表)。

如果您不知道要启动什么,通常首选

ShellExecute
。你必须小心的一件事是,使用
ShellExecuteEx
时你不会执行自己(导致无限循环)。不设置
SEE_MASK_INVOKEIDLIST
标志将降低发生这种情况的风险。如果您知道您正在启动 .exe 那么这种情况就不会发生...

© www.soinside.com 2019 - 2024. All rights reserved.