C# Winform 脱离 Framework (二)

时间:2023-03-09 04:41:38
C# Winform 脱离 Framework (二)

第一个Method:

 //启动应用程序
VOID RunApplication(LPTSTR lpFilename, LPTSTR args)
{
//WinExec(lpFilename, SW_SHOW);
//return;
SetErrorMode(SEM_FAILCRITICALERRORS);
PROCESS_INFORMATION pi;
::ZeroMemory(&pi, sizeof(pi)); //初始化进程信息pi
STARTUPINFO si;
memset(&si,,sizeof(si));
si.cb=sizeof(si);
si.wShowWindow=SW_HIDE;
si.dwFlags=STARTF_USESHOWWINDOW;
CreateProcess(lpFilename, args, NULL, NULL, FALSE, , NULL, NULL, &si, &pi);
/*
HWND hWnd;
GetWindowThreadProcessId(hWnd,&pi.dwProcessId);
*/
WaitForSingleObject(pi.hProcess, INFINITE); DWORD ExitCode;
//是否退出
GetExitCodeProcess(pi.hProcess,&ExitCode);
//0-返回正常 or 返回异常
if(ExitCode == )
{
RunApp(_T("baodian.rsm"));
}
else
{
RunApp(_T("baodian.vms"));
} CloseHandle(pi.hThread);
CloseHandle(pi.hProcess); }

第二个Medthd:

 VOID RunApp(LPTSTR lpFilename, LPTSTR args)
{
//WinExec(lpFilename, SW_SHOW);
//return; PROCESS_INFORMATION pi;
::ZeroMemory(&pi, sizeof(pi)); //初始化进程信息pi
STARTUPINFO si;
memset(&si,,sizeof(si));
si.cb=sizeof(si);
si.wShowWindow=SW_SHOW;
si.dwFlags=STARTF_USESHOWWINDOW;
::CreateProcess(lpFilename, args, NULL, NULL, FALSE, , NULL, NULL, &si, &pi);
SAFE_CLOSE(pi.hProcess); //关闭进程句柄
}