|
回复:(katherien)求助:如何用vc来封装ansys
本帖最后由 wdhd 于 2016-3-2 14:32 编辑
不知道你说得是否是下面的意思
首先定义变量:
PROCESS_INFORMATION pi; //记录进程初始状态
DWORD dwExitCode; //退出代码
CString m_strInputFile; //命令流输入文件名
CString m_strOutFile; //结果输出文件名
之后是调用和终止ANSYS的代码:
void CZTDlg::OnOK()
{
// TOD Add extra validation here
CDialog::OnOK();
m_strInputFile = "E:\\parameterAnalysis\\GantryCrane\\zt.mac";
m_strOutFile = "E:\\parameterAnalysis\\GantryCrane\\zt.out";
//存储ANSYS路径的变量
CString sCommandLine;
char cCommandLine[MAX_PATH];
//初始化变量si
//设置变量si的字节大小
STARTUPINFO si = {sizeof(si)};
//设置ANSYS批处理程序以窗口方式运行
si.dwFlags=STARTF_USESHOWWINDOW;
//设置ANSYS批处理程序以最大化方式运行
si.wShowWindow=SW_SHOWMAXIMIZED;
//获得ANSYS的路径及批处理时所带的参数
sCommandLine ="d:\\Program Files\\Ansys Inc\\v80\\ANSYS\\bin\\intel\\ ansys80.exe -b -i "+m_strInputFile+"-o "+m_strOutFile;
::strcpy(cCommandLine, sCommandLine);
//创建"ANSYS"子进程
BOOL ret = CreateProcess(NULL, cCommandLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
if (ret) {
//释放程序控制权
return; }
else //创建子进程出错
{
AfxMessageBox( "CreateProcess错误:"+GetLastError() );
return;
}
}
void CZTDlg::TerminateAnsys()
{
//获取子进程的退出码
if(GetExitCodeProcess(pi.hProcess,&dwExitCode))
{
//如果子进程还未结束
if (dwExitCode==STILL_ACTIVE)
{
//终结该进程
if (TerminateProcess(pi.hProcess,dwExitCode)) // 关闭子进程句柄
CloseHandle(pi.hProcess);
}
}
}
|
|