[英]how can I run an external program In C?
如何在C中運行外部程序? 例如應用程序,如browser
, word
, Notepad
等。另外,如何設置外部應用程序窗口的特定大小? 例如,窗口大小為300 X 300
像素。
標准方式是system
- 幾乎可以在任何地方工作,但是無法控制子進程的運行方式。
按控制(和復雜性)的升序,Windows提供: WinExec
, ShellExecute
, ShellExecuteEx
和CreateProcess
。 使用CreateProcess,您可以傳遞STARTUPINFO
或STARTUPINFOEX
結構。 無論哪種方式,您都可以指定子窗口的起始位置和/或大小(盡管子進程可以並且可以在窗口甚至可見之前移動/調整其大小)。
您可能還需要考慮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
您還可以檢查_popen ( stdio.h )以獲取控制台應用程序(僅限)。
要創建重定向輸入和輸出的Windows應用程序,請參閱在Windows SDK中創建具有重定向輸入和輸出的子進程 。
切勿在Windows上使用system()(禁止)使用Shell apis
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.