JobPlus知识库 IT 软件开发 文章
神助攻!Gambit与FLUENT通过VC调用

在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计算已经完成!");


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

¥ 打赏支持
47人赞 举报
分享到
用户评价(0)

暂无评价,你也可以发布评价哦:)

扫码APP

扫描使用APP

扫码使用

扫描使用小程序