33,311
社区成员
发帖
与我相关
我的任务
分享
bool ConsoleCompiler(char * ch)
{
// 建立批处理文件
std::ofstream fout( "CBStudy.cmd" );
if ('v'==ch[0]) {
fout << "@echo off\nset PATH=" << CBS_vcbin << ";%PATH%\nset INCLUDE=" <<CBS_include
<<"\nset LIB=" << CBS_lib <<"\ncolor a\n@echo 欢迎使用命令行VC2010编译器中文版 你可以使用TAB自动补全\ncl\ncd \\mycpp\n" ;
}
if ('g'==ch[0]) {
fout << "@echo off\nset PATH=" << CBS_gccbin << ";%PATH%\ncolor a\n@echo 欢迎使用命令行 GCC 编译器中文版 你可以使用TAB自动补全\ng++ -v\ncd \\mycpp\n" ;
}
fout.close();
// 执行批处理文件
char szCommandLine[] = "cmd /k CBStudy.cmd";
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
si.dwFlags = STARTF_USESHOWWINDOW; // 指定wShowWindow成员有效
si.wShowWindow = TRUE; // 此成员设为TRUE的话则显示新建进程的主窗口,
// 为FALSE的话则不显示
BOOL bRet = ::CreateProcess (
NULL, // 不在此指定可执行文件的文件名
szCommandLine, // 命令行参数
NULL, // 默认进程安全性
NULL, // 默认线程安全性
FALSE, // 指定当前进程内的句柄不可以被子进程继承
CREATE_NEW_CONSOLE, // 为新进程创建一个新的控制台窗口
NULL, // 使用本进程的环境变量
NULL, // 使用本进程的驱动器和目录
&si,
&pi);
return true;
}