繁体   English   中英

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

[英]how can I run an external program In 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来设置大小和位置。

你可以使用系统功能,如,

#include <stdlib.h>

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM