一个简单问题,我建立的mfc对话框项目。想在我的程序里打开一个exe程序!
怎样用我的程序打开一个exe程序?并得到是否成功打开的状态?
谢谢!!

解决方案 »

  1.   

    http://www.vckbase.com/document/viewdoc.asp?id=416
      

  2.   

    ShellExecute
    成功的话返回一个大于32的数
      

  3.   

    三个SDK函数 winexec, shellexecute,createprocess可以使用。
    WinExec最简单,两个参数,前一个指定路径,后一个指定显示方式.后一个参数值得说一下,比如泥用 SW_SHOWMAXMIZED方式去加载一个无最大化按钮的程序,就是Neterm,calc等等,就不会出现正常的窗体,但是已经被加到任务列表里了。ShellExecute较 WinExex灵活一点,可以指定工作目录,下面的Example就是直接打开 c:\temp\1.txt,而不用加载与 txt文件关联的应用程序,很多安装程序完成后都会打开一个窗口,来显示Readme or Faq,我猜就是这么作的啦.ShellExecute(NULL,NULL,_T("1.txt"),NULL,_T("c:\\temp"),SW_SHOWMAXMIZED)CreateProcess最复杂,一共有十个参数,不过大部分都可以用NULL代替,它可以指定进程的安全属性,继承信息,类的优先级等等.来看个很简单的Example:
     STARTUPINFO stinfo
    //启动窗口的信息
     PROCESSINFO procinfo //进程的信息 CreateProcess(NULL,_T("notepad.exe"),NULL,NULL.FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL, &stinfo,&procinfo)
      

  4.   

    //   创建一个进程来运行其他程序  
    STARTUPINFO   si  ;
     
    ZeroMemory(&si, sizeof(si));//必须进行初始化,否则将产生错误   
    PROCESS_INFORMATION  pi;
    TCHAR  szCmdLine[] =TEXT("C:\\WINNT\\SYSTEM32notepad.exe");  
    int success = CreateProcess(NULL, szCmdLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
     if (success != 0)
    {
         //创建成功,程序开始运行
    }
    else
    {    //创建失败
    }
      

  5.   

    同意他们的啦,
    PROCESS_INFORMATION pi;
    STARTUPINFO         si;
    char *pathstr;
    pathstr = new char[60];
    CString path1,outp1;
    path1 = GetSystemDirectory(pathstr,MAX_PATH);
    outp1.Format("path is %s , return is %s",pathstr,path1); GetStartupInfo(&si);
    CreateProcess(NULL,
    "sam 1",NULL,NULL,TRUE,
    0,NULL,NULL,
    &si,&pi);其实函数重要,其他的查MSDN就好了。
      

  6.   

    所有的进程信息都存放在pi结构中,进程句柄pi.hProcess.进程主线程的句柄pi.hThread.等等。