15,467
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <windows.h>
#include <string.h>
//#include <afx.h>
//#include <afxwin.h>
void main(void)
{
//命令行参数
char cmdline[]= "2d -i C:\\Fluent\\Mixer_Test1.journal ";
//这里解释下上面的语句,2d就是选择Fluent运算类型,这里是2维,后面是Fluent批处理文件所在目录;这里要提的是,即使我不定义creatprocess中的第二个参数,令其为NULL,单纯调用fluent,在选择运算类型时,程序也不会进行等待。
char m_FluentDir[]= "C:\\Fluent.Inc\\ntbin\\ntx86\\fluent.exe ";
//这里调用CMD,运行就是正确的
//char m_FluentDir[]= "C:\\windows\\system32\\cmd.exe ";
//调用VS也是
//char m_FluentDir[]= "D:\\02_Entertaiment Pro\\VS正式版3.0\\VSClient.exe ";
char m_WorkDir[]= "C:\\Fluent ";
DWORD idFlagW;
BOOL bRet;
//创建新进程
//定义STARTUPINFO结构指针
STARTUPINFO StartupInfo={sizeof(StartupInfo)};
//StartupInfo={sizeof(StartupInfo)};
PROCESS_INFORMATION ProcessInfo;
//memset(&StartupInfo,0,sizeof(STARTUPINFO));
//StartupInfo.cb=sizeof(STARTUPINFO);
StartupInfo.dwFlags=STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow=SW_HIDE;
//创建新进程
bRet=CreateProcess(m_FluentDir,NULL,NULL,NULL,FALSE,0,NULL,m_WorkDir,&StartupInfo,&ProcessInfo);
if(!bRet)
{
printf( "调用程序失败!\r\n 计算已经完成 ");
return;
}
idFlagW=WaitForSingleObject(ProcessInfo.hProcess ,INFINITE);
if (idFlagW == WAIT_OBJECT_0)
{
printf( "Process is signaled...\n ");
}
else if (idFlagW == WAIT_TIMEOUT)
{
printf( "Time out...\n ");
}
else if (idFlagW == WAIT_FAILED)
{
printf( "Invalid process handle...\n ");
}
printf( "调用程序成功!\r\n 计算已经完成 ");
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
}