我可以知道每个Exec
,ExecWait
,ExecShell
,nsExec::Exec
,nsExec::ExecToLog,
nsExec::ExecToStack
,{{1}之间的区别和} ExecDos
一样,何时使用哪个?
我发布了我知道的各种执行电话。我正在努力制作一份全面的清单,以便它可以帮助未来的访客。
ExecCmd
:明确执行被调用的字符串,无论是应用程序,控制台还是文件。
Exec
:执行ExecWait
,但等待进程退出。
Exec
:它的用途是什么?
ExecShell
:就像nsExec::Exec
或Exec
一样,但仅限于命令提示符,而且无需打开控制台窗口。我不确定它是否等待进程退出。 ExecWait
等待子流程退出吗?
nsExec::Exec
:nsExec::ExecToLog
与普通The documentation says ExecToLog
类似,但输出到日志窗口。 这是什么意思,什么是日志窗口?
nsExec
:文档说nsExec::ExecToStack
与普通ExecToStack
类似,但它将输出推送到堆栈。我明白了。
nsExec
:与ExecDos
相同,但另外(不是?)
一个。获取用作运行应用程序的stdin的字符串参数。
湾在同步/异步模式下工作。
℃。它适用于.onInit checkouts。
nsExec::ExecToStack
:与ExecCmd
相同,但不需要这些
ExecDos
份。 我是否正确?
答案 0 :(得分:43)
1)2)3)
Exec
和ExecWait
在内部使用CreateProcess,只能启动程序和批处理文件。
ExecShell
使用ShellExecute,这意味着它还可以启动任何已注册的文件类型(.txt .chm等)和网址。如果您启动的程序需要使用UAC升级,也应该使用它。
<强> 4)强>
nsExec重定向stdout,以便在子进程执行时看不到控制台窗口。是的,等等。
5)
instfiles页面上的日志窗口。
<强> 7)强>
是的,ExecDos和ExecCmd都是nsExec的更高级版本。
<强> 8)强>
正确
答案 1 :(得分:3)