微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从Windows中的C ++程序执行另一个exe

我想让我的C ++程序在Windows中执行另一个.exe。 我将如何做到这一点? 我正在使用Visual C ++ 2010。

这是我的代码

#include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc,_TCHAR* argv[]) { unsigned int input; cout << "Enter 1 to execute program." << endl; cin >> input; if(input == 1) /*execute program here*/; return 0; }

PHP的Gettext – 没有翻译

将UNCpath转换为C#中的本地path

我怎么能听监视器被添加删除

如何找出哪个进程已经开始我的exe文件

实施可靠的日志

文件:URI和斜杠

直接打印到USB打印机,绕过Windows假脱机程序

用可打印区域打印带有页边空白的文档

C:和C之间的区别/

GStreamer链接错误

你可以使用system功能

int result = system("C:\Program Files\Program.exe");

使用CreateProcess()函数

有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425%28v=vs.85%29.aspx

这是我以前在寻找答案时找到的解决方案。

它指出,你应该总是避免使用system(),因为:

这是资源沉重

它打败了安全 – 你不知道你是一个有效的命令还是在每个系统上都做同样的事情,你甚至可以启动你不打算启动的程序。 危险在于,当你直接执行一个程序时,它会获得与你的程序相同的权限 – 也就是说,例如,如果你以系统管理员身份运行,那么你不经意间执行的恶意程序也以系统管理员身份运行。

反病毒程序讨厌它,你的程序可能被标记为病毒。

相反,可以使用CreateProcess()。

Createprocess()用于启动一个.exe并为其创建一个新的进程。 应用程序将独立于调用应用程序运行。

#include <Windows.h> void startup(LPCSTR lpApplicationName) { // additional @R_197_4045@ion STARTUPINFOA si; PROCESS_@R_197_4045@ION pi; // set the size of the structures ZeroMemory(&si,sizeof(si)); si.cb = sizeof(si); ZeroMemory(&pi,sizeof(pi)); // start the program up CreateProcessA ( lpApplicationName,// the path argv[1],// Command line NULL,// Process handle not inheritable NULL,// Thread handle not inheritable FALSE,// Set handle inheritance to FALSE CREATE_NEW_CONSOLE,// Opens file in a separate console NULL,// Use parent's environment block NULL,// Use parent's starting directory &si,// Pointer to STARTUPINFO structure &pi // Pointer to PROCESS_@R_197_4045@ION structure ); // Close process and thread handles. CloseHandle(pi.hProcess); CloseHandle(pi.hThread); }

您可以使用system拨打电话

system("./some_command")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐