J'utilise CreateProcess() avec les indicateurs de démarrage définis sur STARTF_USESHOWWINDOW et SW_HIDE pour démarrer une application en arrière-plan avec sa fenêtre masquée. Je le fais pour exécuter des tâches de maintenance planifiées et je ne veux pas être dérangé par Windows. Dans la plupart des cas, les fenêtres sont cachées, mais il y a des cas où la fenêtre du programme apparaît devant vous (par exemple Google Chrome - j'ai commencé à tester avec différentes applications pour voir si c'était un problème de temps mais non. ..).Création de processus masqués (fenêtre non visible)
Cela se produit moins dans Windows XP, mais cela arrive beaucoup sur Vista.
Y a-t-il un drapeau qui me manque? Y at-il un autre moyen de créer un processus avec sa fenêtre cachée?
Merci!
mon exemple de code est:
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
}
ok, cela semble fonctionner, mais je reçois une erreur et après avoir recherché le MSDN il dit que je n'ai pas besoin de privilèges DESKTOP_CREATEWINDOW. Savez-vous comment changer les privilèges de mon processus et ajouter DESKTOP_CREATEWINDOW? – wonderer
Ok, je le découvre. createdesktop était la réponse. Merci! – wonderer