如何从另一个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"); }