我正在使用CreateProcess()將啓動標誌設置爲STARTF_USESHOWWINDOW和SW_HIDE以在隱藏窗口的背景中啓動應用程序。 我這樣做是爲了運行一個計劃的維護任務,我不想被打擾與Windows。創建隱藏進程(窗口不可見)
在大多數情況下,窗口是隱藏的,但有些情況下,程序的窗口會在您的面前彈出(例如Google的Chrome瀏覽器 - 我開始使用不同的應用程序進行測試,以查看這是否是曾經的問題,但不是。 ..)。
在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 2009-07-17 14:30:54