在另一个c ++程序中打开.exe c ++程序

时间:2017-05-05 09:00:05

标签: c++ console c++14 exe

我在C ++上创建一个简单的控制台

我知道如何从我的控制台运行已编译的C ++程序(exe文件),但它只在多个窗口中启动。

所以,我想知道如何在我的控制台中运行它,就像在windows cmd中一样。有可能吗?

1 个答案:

答案 0 :(得分:0)

如果您是初学者:

#include <iostream>
#include <windows.h>
using namespace std;

int main(){
    system("Name.exe"); //This is for starting program in your programs console.
    system("start Name.exe"); //This is for starting program in its own console.
    return 0;
}

注意:通常程序员和防病毒软件不喜欢system(),可能是因为:

  • 资源很丰富
  • 它破坏了安全性-您不知道它是有效的命令还是在每个系统上都执行相同的操作,甚至可以启动您不打算启动的程序。危险在于,当您直接执行程序时,它会获得与程序相同的特权-意味着,例如,如果您以系统管理员身份运行,那么您刚刚无意中执行的恶意程序也会以系统管理员身份运行。如果那还不吓到您,请检查您的脉搏。
  • 反病毒程序讨厌它,您的程序可能会被标记为病毒。

-来自here

.. so,您可以改用:

ShellExecute(NULL, "open", "Name.exe", NULL, NULL, SW_SHOWDEFAULT);

或:

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 );
}

注意:具有相同的#include <iostream>#include <windows.h>using namespace std;标头!在最后两个选项中,您可以更改参数以获得更好的结果。

How do I open an .exe from another C++ .exe?