IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Threads & Processus C++ Discussion :

Changer la priorité d'un processus erreur 403 ?


Sujet :

Threads & Processus C++

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    décembre 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : décembre 2006
    Messages : 380
    Points : 131
    Points
    131
    Par défaut Changer la priorité d'un processus erreur 403 ?
    Bonjours,

    L'OS de développement est un Windows 10 sur code blocks

    J'essaye déjà de faire cela a ma propre application dans le but d'éviter les problèmes de droits

    Ce code est fourni en partie sur le site de Microsoft Ref:https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

    je veux modifier la priorité d'un processus
    exemple
    process_1.exe est en priorité normal
    le faire passer en :
    process_1.exe inférieur a la normal

    le souci c est qu'a la ligne 36 je me prend :

    Failed to end background mode (403)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    #include <stdio.h>
    #include <windows.h>
    #include <tlhelp32.h>
    #include <iostream>
    #include <tchar.h>
     
    using namespace std;
     
    void MePrio(){
        const int PROCESS_MODE_BACKGROUND_BEGIN = 0x00100000;
        const int PROCESS_MODE_BACKGROUND_END = 0x00200000;
        DWORD dwError, dwPriClass;
     
       if(!SetPriorityClass(GetCurrentProcess(), BELOW_NORMAL_PRIORITY_CLASS))
       {
      /*  
          dwError = GetLastError();
          if( ERROR_PROCESS_MODE_ALREADY_BACKGROUND == dwError)
             _tprintf(TEXT("Already in background mode\n"));
          else _tprintf(TEXT("Failed to enter background mode (%d)\n"), dwError);
          goto Cleanup;
     */
          cout << "le processus n'est pas en prioriter normal ?" << endl;
     
       }
     
       // Display priority class
     
       dwPriClass = GetPriorityClass(GetCurrentProcess());
     
       _tprintf(TEXT("Current priority class is 0x%x\n"), dwPriClass);
     
       if(!SetPriorityClass(GetCurrentProcess(), PROCESS_MODE_BACKGROUND_END))
       {
          _tprintf(TEXT("Failed to end background mode (%d)\n"), GetLastError());
       }
         cout << "Fin" << endl;
    };
     
    int main()
    {
        MePrio();
        return 0;
    }
    évidement chercher l'erreur 403 sur le net deviens juste impossible....
    Merci de m’avoir lu et bonne journée

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    juin 2010
    Messages
    6 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 6 676
    Points : 30 470
    Points
    30 470
    Billets dans le blog
    4
    Par défaut
    Pourtant l'erreur 403 est parfaitement documentée.
    Et à priori tout à fait logique, pourquoi tu veux mettre un terme au mode background si tu ne l'as pas mise en mode background auparavant ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    décembre 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : décembre 2006
    Messages : 380
    Points : 131
    Points
    131
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Pourtant l'erreur 403 est parfaitement documentée.
    Et à priori tout à fait logique, pourquoi tu veux mettre un terme au mode background si tu ne l'as pas mise en mode background auparavant ?
    Merci pour le lien ,non j'arrivai pas a mettre la main dessus, mystère...

    pour background je pensais changer le status de
    normal (celle de base ) a celui de background ?

    ou j'ai rater quelque chose ?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    juin 2010
    Messages
    6 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 6 676
    Points : 30 470
    Points
    30 470
    Billets dans le blog
    4
    Par défaut
    Je dirais que t'as raté au moins des cours d'anglais.. vu que ton code fait SetPriorityClass(GetCurrentProcess(), PROCESS_MODE_BACKGROUND_END) qui aux dernières nouvelles termine le mode background - c'est litéralement la traduction.
    Pour passer au mode background il faut au minimum utiliser les bons arguments, au hasard PROCESS_MODE_BACKGROUND_BEGIN.
    Rien qui ne soit pas disponible dans la doc !
    Après c'est sûr que si tu regardes la doc de SetThreadPriority, que tu donnes en lien au début, alors que tu utilises SetPriorityClass, ça marche moins bien.
    Pourtant c'est le tout premier lien que me retourne Google - et c'est généralement le cas pour toutes les fonctions Windows et la MSDN.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    décembre 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : décembre 2006
    Messages : 380
    Points : 131
    Points
    131
    Par défaut
    Merci pour ta réponse , je confirme je ne parle pas l'anglait ce qui n'est pas sans conséquence
    je vais aussi devoir lister tout les processus, mai la n'est pas le sujet de la discussion.

    Voici ce qui fonctionne chez moi ceci dit c'est un peux le boxon.
    Cela peut aider quelqu’un d'autre car pour moi le sujet est résolut

    j'ai du déclarer la(les) ligne(s) suivante(s) et donc en chercher la valeur qui n'est pas fournis dans l'exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const int PROCESS_MODE_BACKGROUND_END = 0x00200000;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    //adapter les includes aux besoins tous ne sont pas forcement utiliser
    #include <stdio.h>
    #include <windows.h>
    #include <tlhelp32.h>
    #include <iostream>
    #include <tchar.h>
    void MePrio(){
        //const int PROCESS_MODE_BACKGROUND_BEGIN = 0x00010000;
        const int PROCESS_MODE_BACKGROUND_BEGIN = 0x00100000;
        const int PROCESS_MODE_BACKGROUND_END = 0x00200000;
        //const int THREAD_MODE_BACKGROUND_BEGIN = 0x00010000;
        //const int THREAD_MODE_BACKGROUND_END = 0x00020000;
        //const int ERROR_THREAD_MODE_ALREADY_BACKGROUND = ;
        //const int BELOW_NORMAL_PRIORITY_CLASS =0;
        //const int ERROR_PROCESS_MODE_ALREADY_BACKGROUND= ;
    DWORD dwError, dwPriClass;
     
       if(!SetPriorityClass(GetCurrentProcess(), PROCESS_MODE_BACKGROUND_BEGIN))
       {
         /* dwError = GetLastError();
          if( ERROR_PROCESS_MODE_ALREADY_BACKGROUND == dwError)
             _tprintf(TEXT("Already in background mode\n"));
          else _tprintf(TEXT("Failed to enter background mode (%d)\n"), dwError);
          goto Cleanup;*/
                cout << "erreur" << endl;
       }
     
       // Display priority class
     
       dwPriClass = GetPriorityClass(GetCurrentProcess());
     
       _tprintf(TEXT("Current priority class is 0x%x\n"), dwPriClass);
       /*le temps de jeter un coup d’œil dans le gestionnaire des taches*/
        Sleep(100000); 
       //
       // Perform background work
       //
       ;
     
       if(!SetPriorityClass(GetCurrentProcess(), PROCESS_MODE_BACKGROUND_END))
       {
          _tprintf(TEXT("Failed to end background mode (%d)\n"), GetLastError());
       }
     
    //Cleanup:
       // Clean up
      // ;
     
    };
    Merci pour le coup de main

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    février 2005
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : février 2005
    Messages : 4 756
    Points : 11 343
    Points
    11 343
    Par défaut
    j'ai du déclarer la(les) ligne(s) suivante(s) et donc en chercher la valeur qui n'est pas fournis dans l'exemple
    Le plus probable, c'est que vous n'avez pas correctement configuré les constantes de compilation qui indique la plateforme cible de votre programme, car cette valeur n'est pas disponible pour toutes les versions des OS.
    Windows Server 2003 and Windows XP: This value is not supported.
    https://msdn.microsoft.com/fr-fr/library/6sehtctf.aspx

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Changer la priorité des processus d'arrière plan Oracle
    Par dcollart dans le forum Administration
    Réponses: 1
    Dernier message: 16/07/2010, 15h22
  2. Réponses: 0
    Dernier message: 03/10/2007, 16h31
  3. [Process] Changer la priorité d'un processus
    Par WriteLN dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 17/02/2005, 12h12
  4. Réponses: 3
    Dernier message: 17/02/2005, 00h39
  5. [VB6] Forçage de la priorité d'un processus Windows
    Par okyle dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 01/06/2004, 11h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo