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

时间:2011-03-11 21:35:12

标签: c winapi

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

6 个答案:

答案 0 :(得分:14)

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

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

你可能还想考虑Boost Process,它不被接受作为Boost的官方部分,但提供比system更多的控制,同时保持相当可移植到相当数量的最常用的系统(包括Windows和任何类似POSIX的系统,如Linux或OS X)。

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

您可以将系统功能用于此目的,例如

#include <stdlib.h>

int main()
{
    system("your-program-name");

    return 0;
}

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

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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

要创建重定向输入和输出的Windows应用程序,请参阅Windows SDK中的Creating a Child Process with Redirected Input and Output

答案 5 :(得分:0)

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