如何从另一个C ++ .exe打开一个.exe文件?

我想要做的是从另一个.exe打开.exe。 我真的不知道该怎么做,所以我search了互联网。 我尝试了一些来自互联网的build议方法,但没有奏效。

这是我的代码:

#include <iostream> #include <windows.h> using namespace std; int main() { system ("OpenFile.exe"); system ("pause"); return 0; } 

当我在DEV C ++中运行它时,它不能编译,我得到一个错误。 有人可以帮帮我吗?

你应该总是避免使用system(),因为

  • 这是资源沉重
  • 它打败了安全 – 你不知道你是一个有效的命令还是在每个系统上都做同样的事情,你甚至可以启动你不打算启动的程序。 危险在于,当你直接执行一个程序时,它会获得与你的程序相同的权限 – 也就是说,例如,如果你以系统pipe理员身份运行,那么你不经意间执行的恶意程序也以系统pipe理员身份运行。 如果这不能吓倒你,请检查你的脉搏。
  • 反病毒程序讨厌它,你的程序可能被标记为病毒。

你应该使用CreateProcess() 。

您可以使用Createprocess()来启动一个.exe,并为其创build一个新的进程。 应用程序将独立于调用应用程序运行。

以下是我在其中一个项目中使用的示例:

 #include <Windows.h> VOID startup(LPCTSTR lpApplicationName) { // additional information STARTUPINFO si; PROCESS_INFORMATION pi; // set the size of the structures ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); // start the program up CreateProcess( lpApplicationName, // the path argv[1], // Command line NULL, // Process handle not inheritable NULL, // Thread handle not inheritable FALSE, // Set handle inheritance to FALSE 0, // No creation flags NULL, // Use parent's environment block NULL, // Use parent's starting directory &si, // Pointer to STARTUPINFO structure &pi // Pointer to PROCESS_INFORMATION structure (removed extra parentheses) ); // Close process and thread handles. CloseHandle( pi.hProcess ); CloseHandle( pi.hThread ); } 

编辑:你得到的错误是因为你需要指定的.exe文件的path不只是名称。 Openfile.exe可能不存在。

我已经取得了巨大的成功:

 #include <iostream> #include <windows.h> int main() { ShellExecute(NULL, "open", "path\\to\\file.exe", NULL, NULL, SW_SHOWDEFAULT); } 

如果您有兴趣,请查看完整的文档:

http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx 。

尝试这个:

 #include <windows.h> int main () { system ("start notepad.exe") // As an example. Change [notepad] to any executable file // return 0 ; } 

你得到这个错误,因为你没有给完整的path。 (C:\ Users … \ file.exe)如果要删除此错误,请提供完整path或将该应用程序(要打开)复制到项目(.exe)存在/保存的文件夹中。

 #include <windows.h> using namespace std; int main() { system ("start C:\\Users\\Folder\\chrome.exe https://www.stackoverflow.com"); //for opening stackoverflow through google chrome , if chorme.exe is in that folder.. return 0; } 

提供文件“openfile.exe”的完整path,切记不要在c:/ users / username / etc等path中input斜杠'/'….而不要使用c:\​​ Users \ username \等(对于Windows)

可能这会帮助你

当可执行path在系统调用中有空格时!

 #include<iostream> using namespace std; main() { system("explorer C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe "); system("pause"); }