如何在C中运行外部程序?

如何在C中运行外部程序? 例如应用程序,如browserwordNotepad等。另外,如何设置外部应用程序窗口的特定大小? 例如,窗口大小为300 X 300像素。

标准方法是system – 几乎可以在任何地方工作,但是无法控制子进程的运行方式。

按控制(和复杂性)的升序,Windows提供: WinExecShellExecuteShellExecuteExCreateProcess 。 使用CreateProcess,您可以传递STARTUPINFOSTARTUPINFOEX结构。 无论哪种方式,您都可以指定子窗口的起始位置和/或大小(尽管子进程可以并且可以在窗口甚至可见之前移动/调整其大小)。

您可能还需要考虑Boost Process ,它不被接受作为Boost的官方部分,但提供比system更多的控制,同时保持合理的可移植到相当多的最广泛使用的系统(包括Windows和任何东西)合理的POSIX,如Linux或OS X)。

您可以使用C标准库或Win32 CreateProcess函数中的系统运行外部程序。

要调整您创建的应用程序的主窗口的大小。 首先使用CreateWindow启动该过程。 然后使用带有CreateProcess句柄的EnumThreadWindows来查找该进程的主窗口。 最后,您可以使用该句柄调用MoveWindow来设置大小和位置。

你可以使用系统function,如,

 #include  int main() { system("your-program-name"); return 0; } 

这将在命令提示符下执行。

但是如果你想使用winapi,最好的方法是使用CreateProcess()函数, http://msdn.microsoft.com/en-us/library/ms682425.aspx

要运行外部程序,最直接的方法是使用system 。 还有其他选择(使用搜索)。

要设置窗口大小,您必须与窗口管理器进行交互并要求它执行此操作。 我不知道你是否可以这样做(Windows有一个“启动”命令,如果你使用那个操作系统,你可能会觉得有用)。

您还可以检查_popenstdio.h )以获取控制台应用程序(仅限)。

要创建重定向输入和输出的Windows应用程序,请参阅在Windows SDK中创建具有重定向输入和输出的子进程 。

切勿在Windows上使用system()(禁止)使用Shell apis