在C程序中调用默认的Windows可执行文件

我使用system()函数在我的C代码中调用certmgr.exe 。 一旦我启动我的可执行文件,会出现一个命令提示符,显示已成功安装证书

但我不想要命令promt被打开。 怎么做??

用C语言调用“exe”的任何其他方法

谢谢,,,

在Windows上最简单的方法是调用ShellExecute 。 通过SW_HIDE确保没有显示控制台窗口。

你也可以使用CreateProcess但调用起来有点麻烦。 使用CREATE_NO_WINDOW标志来禁止控制台窗口。

我不会使用系统来运行任何东西..这是为什么: http : //www.cplusplus.com/forum/articles/11153/

您可以使用ShellExecute运行应用程序http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx通过SW_HIDE,你就完成了。

无法在后台无提示地运行cmd.exe 。 但是,请查看start命令及其关联的/B选项:

启动一个单独的窗口来运行指定的程序或命令。

START [“title”] [/ D path] [/ I] [/ MIN] [/ MAX] [/ SEPARATE | /共享] [/ LOW | / NORMAL | / HIGH | / REALTIME | / ABOVENORMAL | / BELOWNORMAL] [/ AFFINITY] [/ WAIT] [/ B] [命令/程序] [参数]

B启动应用程序而不创建新窗口。 应用程序已忽略^ C处理。 除非应用程序启用^ C处理,否则“中断”是中断应用程序的唯一方法。

你会更好的CreateProcess

WINAPI有一个CreateProcess()函数,您可以使用它来运行另一个可执行文件。 这个函数有几个参数可以提供一个机制来显示certmgr.exe的控制台窗口(来自进程创建标志参数):

CREATE_NO_WINDOW该进程是一个正在运行的控制台应用程序,没有控制台窗口。 因此,应用程序的控制台句柄未设置。

由TED在这个链接回答最终帮助我…

这可能有助于未来…

其他人提到使用CreateProcess(大概是重定向输出)。 发生这种情况的一般原因是您通过“系统”运行的程序是一个命令行程序。 如果是自己编译的东西,那么可以通过将其构建为GUI程序来摆脱控制台窗口。 你应该能够通过包含Windows.h并使用WinMain()作为你的入口点来代替main()