Interrompre la fermeture de session

Signaler
Messages postés
61
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
19 janvier 2007
-
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
-
Bonjour tout le monde
Voilà je veux faire un prog, qui à la fermeture de session met en attente la fermeture, lance un exe puis ferme la session
Pour cela j'ai fait le prog suivant. Ce programme fonctionne bien lorqu'il est appelé par exemple lors de la fermeture d'une fenêtre. Mais lors de la fermeture de session, il me met le message d'erreur suivant
 L'application n'a pas pu s'initialiser car la station de travail est en train de s'arrêtée. En parlant de c:\\SOS\\agent\\Agent.exe
Pourquoi continue-t-il à s'arrêter alors que j'ai mis un WaitForSingleObject et même si je mets un AbortSystemShutdown(NULL);, il veut finir d'arrêter mon programme.

Quelqu'un pourrait m'aider s'il vous plait

Merci

int interrompre_arret(int lParam)
{
    /* Interactions */     int iShutType 0;                //type d'arret la valeur correspondant à l'action effectuée
    //int iRep;                    //retour de la fonction API
 
    bool bTrue = true;
    bool bFalse = false;
    char toto;
    /* Parametres */
    int iDelay = 30;
    bool bForceShutdown = false;
    bool bReboot = false;
    char sMessage[] = "L'arret de Windows a ete relancé par SOSDATA.";
 
 
     char *identifiant_chemin_install = CHEMIN_INSTALL1;    //nom identifiant de la société
     char ident_chemin_install[T_IDENT]="";                 //valeur identifiant de la société
     char chemin_appli[T_IDENT]="";                 //valeur identifiant de la société
     char *tmp;
     char *execution4;
     
char chemin_system[100]="";    
int i,j;
        
        
          execution4=(char *)malloc(500);
         strcpy(execution4,chemin_appli);
        strcat(execution4,CHEMIN_INSTALL_AGENT);
        strcat(execution4,"/");
        strcat(execution4,"Agent.exe");
        
  
STARTUPINFO         siStartupInfo;
PROCESS_INFORMATION piProcessInfo;


memset(&siStartupInfo, 0, sizeof(siStartupInfo));
memset(&piProcessInfo, 0, sizeof(piProcessInfo));
siStartupInfo.cb = sizeof(siStartupInfo);
if(CreateProcess("c:\\SOS\\agent\\Agent.exe",
                           NULL,0,0,FALSE,
                           CREATE_DEFAULT_ERROR_MODE,0,0,                             
                           &siStartupInfo,&piProcessInfo) == FALSE)
{
// erreur
}
else
{
   // attente
   WaitForSingleObject(piProcessInfo.hProcess, INFINITE);


   ::CloseHandle(piProcessInfo.hThread);
   ::CloseHandle(piProcessInfo.hProcess);
}


MessageBox(0, "Fermeture de windows en cours ...", "S", 0);
   
   
    return 0;
}

 Laetitia

1 réponse

Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
Pour ton problème je ne vois pas, peut-être que Windows refuse d'initialiser une application quand il est est en  train de quitter. Mais pour l'éviter, tu peux peut-être annuler la fermeture de session (retourne 0x0 au message WM_QUERYENDSESSION), lancer ton prog et fermer la session quand il se termine...