如何在C中運行外部程序?例如應用程序,如browser
,word
,Notepad
等。另外我怎樣才能設置外部應用程序的窗口的一定大小?例如一個窗口大小爲300 X 300
像素。如何在C中運行外部程序?
回答
您可以使用來自C標準庫或Win32 CreateProcess函數的system運行和外部程序。
調整您創建的應用程序的主窗口的大小。首先用CreateWindow開始這個過程。然後使用EnumThreadWindows和CreateProcess的句柄來查找該進程的主窗口。最後,您可以撥打該號碼MoveWindow來設置大小和位置。
標準方法是system
- 幾乎可以在任何地方使用,但是不能控制子進程的運行方式。
按照控制(和複雜度)的升序排列,Windows提供:WinExec
,ShellExecute
,ShellExecuteEx
和CreateProcess
。通過CreateProcess,您可以傳遞一個STARTUPINFO
或STARTUPINFOEX
結構。無論哪種方式,您都可以指定子窗口的起始位置和/或大小(儘管子進程可以並且可以在其窗口甚至可見之前移動/調整窗口大小)。
您可能還需要考慮Boost Process
,這是不接受爲升壓的正式組成部分,但提供了比system
更多的控制,同時保持合理的移植到相當數量的最廣泛使用的系統(包括Windows和任何類似POSIX的合理軟件,比如Linux或OS X)。
'system'的問題在於它打開了控制檯(無論如何都是在Windows中)。有什麼方法可以擺脫這種情況嗎? – 2016-08-07 15:04:33
我認爲我給出的替代方案清單仍然相當準確。如果你需要捕獲孩子的'stdout'或者輸入到'stdin'的輸出,你可能會考慮'popen'。我還添加了一個指向Boost.Process的指針,您可能會發現它很有用(但請注意,儘管名稱不是正式發佈的Boost部分)。 – 2016-08-07 18:29:20
您可以使用系統功能用於此目的一樣,
#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中的Creating a Child Process with Redirected Input and Output。
在Windows 不要使用系統()(禁止) 使用命令行的API
- 1. 如何通過C++在Mac OS中運行外部程序?
- 2. C++:如何檢查外部程序是否在運行?
- 3. 在Java中運行外部程序
- 4. 運行外部程序
- 5. Java,運行外部程序
- 6. 如何從C運行外部程序並解析其輸出?
- 7. 如何在Perl中異步運行外部程序?
- 8. 如何在Perl中運行外部程序?
- 9. 如何在monkeyrunner代碼中運行外部程序?
- 10. 如何在windows上運行node.js中的外部程序?
- 11. 如何在Flex應用程序中運行外部SWF?
- 12. 如何在外部庫JAR中運行Java程序終端
- 13. 如何在PHP腳本中運行涉及外部庫的C程序?
- 14. 在gae上運行外部程序
- 15. 如何在c中執行外部程序
- 16. 在沙盒應用程序中運行外部程序
- 17. C#確定何時運行或退出外部應用程序
- 18. 運行外部C#文件中的程序
- 19. 運行外部程序,而在C#幾個參數
- 20. 如何在運行應用程序時加載外部DLL?
- 21. C#並行運行多個非阻塞外部程序
- 22. 在eclipse外部運行時,程序無法完全運行
- 23. Python運行外部python程序
- 24. AS3運行一個外部程序
- 25. 運行外部窗口程序的DOSBOX
- 26. 的Python:運行外部程序動態
- 27. 用php運行一個外部程序
- 28. 由java運行外部程序(Siesta)
- 29. 使用PHP CLI運行外部程序
- 30. 問題運行外部程序
每個線程都應該是一個問題。你應該爲第二個問題創建一個新線程(儘管快速搜索會爲你找到答案)。 – 2011-03-11 21:38:07