第一个Method:
1 //启动应用程序
2 VOID RunApplication(LPTSTR lpFilename, LPTSTR args)
3 {
4 //WinExec(lpFilename, SW_SHOW);
5 //return;
6 SetErrorMode(SEM_FAILCRITICALERRORS);
7 PROCESS_INFORMATION pi;
8 ::ZeroMemory(&pi, sizeof(pi)); //初始化进程信息pi
9 STARTUPINFO si;
10 memset(&si,0,sizeof(si));
11 si.cb=sizeof(si);
12 si.wShowWindow=SW_HIDE;
13 si.dwFlags=STARTF_USESHOWWINDOW;
14 CreateProcess(lpFilename, args, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
15 /*
16 HWND hWnd;
17 GetWindowThreadProcessId(hWnd,&pi.dwProcessId);
18 */
19 WaitForSingleObject(pi.hProcess, INFINITE);
20
21 DWORD ExitCode;
22 //是否退出
23 GetExitCodeProcess(pi.hProcess,&ExitCode);
24 //0-返回正常 or 返回异常
25 if(ExitCode == 0)
26 {
27 RunApp(_T("baodian.rsm"));
28 }
29 else
30 {
31 RunApp(_T("baodian.vms"));
32 }
33
34
35 CloseHandle(pi.hThread);
36 CloseHandle(pi.hProcess);
37
38
39 }
第二个Medthd:
1 VOID RunApp(LPTSTR lpFilename, LPTSTR args)
2 {
3 //WinExec(lpFilename, SW_SHOW);
4 //return;
5
6 PROCESS_INFORMATION pi;
7 ::ZeroMemory(&pi, sizeof(pi)); //初始化进程信息pi
8 STARTUPINFO si;
9 memset(&si,0,sizeof(si));
10 si.cb=sizeof(si);
11 si.wShowWindow=SW_SHOW;
12 si.dwFlags=STARTF_USESHOWWINDOW;
13 ::CreateProcess(lpFilename, args, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
14 SAFE_CLOSE(pi.hProcess); //关闭进程句柄
15 }