我在C ++上创建一个简单的控制台
我知道如何从我的控制台运行已编译的C ++程序(exe文件),但它只在多个窗口中启动。
所以,我想知道如何在我的控制台中运行它,就像在windows cmd中一样。有可能吗?
答案 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;
标头!在最后两个选项中,您可以更改参数以获得更好的结果。