시작 플래그가 STARTF_USESHOWWINDOW 및 SW_HIDE로 설정된 CreateProcess()를 사용하여 백그라운드에서 창을 숨겨서 응용 프로그램을 시작합니다. 예약 된 유지 관리 작업을 실행하기 위해이 작업을하고 있는데 창문에 귀찮게하고 싶지 않습니다.숨겨진 프로세스 만들기 (창 보이지 않음)
대부분의 경우 창은 숨겨져 있지만 프로그램 창의 창이 갑자기 튀어 나오는 경우가 있습니다 (예 : Google 크롬 - 여러 가지 앱으로 테스트를 시작했지만 한 번 문제가 있었는지 여부는 알 수 없음). ..).
이것은 Windows XP에서는 발생하지 않지만 Vista에서는 많이 발생합니다.
누락 된 플래그가 있습니까? 창을 숨겨서 프로세스를 만드는 다른 방법이 있습니까?
감사합니다.
내 샘플 코드는 다음과 같습니다
char *ProgramName
STARTUPINFO StartupInfoF;
PROCESS_INFORMATION ProcessInfoF;
memset(&StartupInfoF, 0, sizeof(StartupInfoF));
memset(&ProcessInfoF, 0, sizeof(ProcessInfoF));
StartupInfoF.cb = sizeof(StartupInfoF);
StartupInfoF.wShowWindow = SW_HIDE;
StartupInfoF.dwFlags = STARTF_USESHOWWINDOW;
if (CreateProcess(ProgramName,
"",
0,
0,
FALSE,
DETACHED_PROCESS,
0,
0,
&StartupInfoF,
&ProcessInfoF) == FALSE)
{
// error
}
else
{
// OK
}
좋아,이 작동하는 것, 그러나 나는 오류가 발생하고 MSDN 검색 후 DESKTOP_CREATEWINDOW 권한이 필요 없다고 말합니다. 내 프로세스의 권한을 변경하고 DESKTOP_CREATEWINDOW를 추가하는 방법을 알고 계십니까? – wonderer
좋아, 알아 낸다. createdesktop이 답이었습니다. 감사! – wonderer