1.CreateProcess失败,GetLastError返回998,应该是最后两个参数没有初始化导致的。
2.要使外部程序隐藏窗口运行,需要将STARTUPINFO的dwFlags指定为STARTF_USESHOWWINDOW,并且将wShowWindow指定为SW_HIDE.
3.第2条创建的进程确实是隐藏运行的,但是程序启动时会导致屏幕闪烁,为了避免屏幕闪烁我们应该创建一个桌面并指定给该进程的STARTUPINFO.
HDESK hDesk = CreateDesktop(_T("MyDesk"), NULL, NULL, 0, GENERIC_ALL, NULL); ASSERT(hDesk); STARTUPINFO si = {sizeof(si)}; si.lpDesktop = _T("MyDesk"); si.dwFlags = STARTF_USESHOWWINDOW; si.wShowWindow = SW_HIDE; PROCESS_INFORMATION pi = {0}; CreateProcess(g_strExePath + _T("DeleteFiles.exe"), NULL, NULL, NULL, FALSE, CREATE_DEFAULT_ERROR_MODE | NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi); CloseHandle(pi.hThread); CloseHandle(pi.hProcess);