在VC++6.0中可以利用CreateProcess函数来创建
一个进程去执行其他程序,而且可以设置该进程
的优先级。
具体实现如下:
//命令行参数
CString cmdline="-id zzj -inp建模.jou -new";
//定义STARTUPINFO结构指针
STARTUPINFO StartupInfo;
memset(&StartupInfo,0,sizeof(STARTUPINFO));
StartupInfo.cb = sizeof(STARTUPINFO);
StartupInfo.dwFlags=STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow=SW_HIDE;
//后台运行程序
PROCESS_INFORMATION ProcessInfo;
// 创建新进程
if (!::CreateProcess(m_GambitDir,cmdline.GetBuffer(cmdline.GetLength()),
NULL,NULL,FALSE,0,NULL,m_WorkDir,&StartupInfo,&ProcessInfo))
{
return;
}
str="正在调用Gambit进行建模!\r\n\r\n请稍候……";
// 显示“等待”对话框
ShowWaitingDlg(str);
// 等待新进程运行结束后再返回控制
WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
// 隐藏“等待”对话框
HideWaitingDlg();
// 显示“完成”对话框
AfxMessageBox("调用程序结束!\r\n建模已经完成!");
在VC++6.0中调用FLUENT的具体实现如下:
// 命令行参数
CString cmdline="-vx 3d -i 求解.jou";
// 创建新进程
// 定义STARTUPINFO结构指针
STARTUPINFO StartupInfo;
memset(&StartupInfo,0,sizeof(STARTUPINFO));
StartupInfo.cb = sizeof(STARTUPINFO);
StartupInfo.dwFlags=STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow=SW_SHOWNORMAL;
PROCESS_INFORMATION ProcessInfo;
// 创建新进程
if (!::CreateProcess(m_FluentDir,cmdline.GetBuffer(cmdline.GetLength()),
NULL,NULL,FALSE,0,NULL,m_WorkDir,&StartupInfo,&ProcessInfo))
{
return;
}
str="正在调用Fluent进行计算!\r\n\r\n请稍候……";
// 显示“等待”对话框
ShowWaitingDlg(str);
// 等待新进程运行结束后再返回控制
WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
// 隐藏“等待”对话框
HideWaitingDlg();
// 显示“完成”对话框
AfxMessageBox("调用程序结束!\r\n计算已经完成!");
登录 | 立即注册