簡體   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