CreateProcess注意的几个地方

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);

 

 

posted @ 2014-02-25 13:39  琼'  阅读(777)  评论(0编辑  收藏  举报