如何在C中运行外部程序?例如,browser
,word
,Notepad
等应用程序。另外,如何设置外部应用程序窗口的特定大小?例如,窗口大小为300 X 300
像素。
答案 0 :(得分:14)
标准方式是system
- 几乎可以在任何地方使用,但无法控制子进程的运行方式。
按控制(和复杂性)的升序排列,Windows提供:WinExec
,ShellExecute
,ShellExecuteEx
和CreateProcess
。使用CreateProcess,您可以传递STARTUPINFO
或STARTUPINFOEX
结构。无论哪种方式,您都可以指定子窗口的起始位置和/或大小(尽管子进程可以并且可以在窗口可见之前移动/调整其大小。)
你可能还想考虑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