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

Langage Delphi Discussion :

mettre l'ordinateur en veille sous Windows 7


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 12
    Points
    12
    Par défaut mettre l'ordinateur en veille sous Windows 7
    Salut

    ce code Delphi permet de mettre l'ordinateur en vielle sous Windows XP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute(0, 'open', 'rundll32.exe', 'powrprof.dll,SetSuspendState', nil, SW_HIDE);
    Mais il ne peut pas sous Windows 7

    Merci

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 577
    Points : 25 225
    Points
    25 225
    Par défaut
    As-tu penser à utiliser les "Token Privilège", pour un REBOOT c'est nécessaire

    Essaye d'utiliser SetSuspendState directement par LoadLibray et non ShellExecute

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 12
    Points
    12
    Par défaut
    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
    51
    52
    53
    54
    55
    56
    57
    58
    function SetSuspendState(
    	Hibernate: Boolean,
    	ForceCritical: Boolean,
    	DisableWakeEvent: Boolean);
     
     
     {  Parameters:
     
       Hibernate: If this parameter is TRUE, the system hibernates.
    			  If the parameter is FALSE, the system is suspended.
       ForceCritical: If this parameter is TRUE, the system suspends operation immediately;
    				  if it is FALSE, the system broadcasts a PBT_APMQUERYSUSPEND event to
    				  each application to request permission to suspend operation.
       DisableWakeEvent: If this parameter is TRUE, the system disables all wake events.
    					 If the parameter is FALSE, any system wake events remain enabled.
     
     
      Windows NT/2000/XP: Included in Windows 2000 and later.
      Windows 95/98/Me: Included in Windows 98 and later.
    }
     
     var
       _SetSuspendState: function (Hibernate, ForceCritical, DisableWakeEvent: BOOL): BOOL
       stdcall = nil;
     
       function LinkAPI(const module, functionname: string): Pointer; forward;
     
     function SetSuspendState(Hibernate, ForceCritical,
       DisableWakeEvent: Boolean): Boolean;
     begin
       if not Assigned(_SetSuspendState) then
    	 @_SetSuspendState := LinkAPI('POWRPROF.dll', 'SetSuspendState');
       if Assigned(_SetSuspendState) then
    	 Result := _SetSuspendState(Hibernate, ForceCritical,
    	   DisableWakeEvent)
       else
    	 Result := False;
     end;
     
     function LinkAPI(const module, functionname: string): Pointer;
     var
       hLib: HMODULE;
     begin
       hLib := GetModulehandle(PChar(module));
       if hLib = 0 then
    	 hLib := LoadLibrary(PChar(module));
       if hLib <> 0 then
    	 Result := getProcAddress(hLib, PChar(functionname))
       else
    	 Result := nil;
     end;
     
     // Example Call:
    // Beispielaufruf:
     
    procedure TForm1.Button1Click(Sender: TObject);
     begin
       SetSuspendState(True, False, False);
    le curseur du erreur pointer apres cette linge:

    Hibernate: Boolean, <----

    les messages d'erreurs
    [Erreur] Unit1.pas(28): ';', ')' ou '=' attendu(e) mais ',' trouvé(e)
    [Erreur] Unit1.pas(29): ';', ')' ou '=' attendu(e) mais ',' trouvé(e)
    [Erreur] Unit1.pas(30): La fonction nécessite un type de résultat
    [Erreur] Unit1.pas(50): Impossible d'initialiser les variables locales
    [Erreur] Unit1.pas(85): ';' attendu(e) mais '.' trouvé(e)
    [Erreur] Unit1.pas(87): Déclaration attendu(e) mais fin de fichier trouvé(e)
    [Erreur fatale] EnVeillewin7.dpr(5): Impossible de compiler l'unité utilisée 'Unit1.pas'

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 105
    Points : 41 195
    Points
    41 195
    Billets dans le blog
    63
    Par défaut

    pas capable de comprendre la message du compilateur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function SetSuspendState(
    	Hibernate,
    	ForceCritical,
    	DisableWakeEvent: Boolean);
     
    //ou 
     
    function SetSuspendState(
    	Hibernate: Boolean;
    	ForceCritical: Boolean;
    	DisableWakeEvent: Boolean);
    devrait corriger

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 12
    Points
    12
    Par défaut
    Mème problème !!

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 577
    Points : 25 225
    Points
    25 225
    Par défaut
    une function nécessite un résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function SetSuspendState(
    	Hibernate: Boolean;
    	ForceCritical: Boolean;
    	DisableWakeEvent: Boolean):  Boolean;
    le code ci-dessus DOIT être dans la section interface


    la variable globale _SetSuspendState et la suite est dans la partie implementation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var
       _SetSuspendState: function (Hibernate, ForceCritical, DisableWakeEvent: BOOL): BOOL stdcall = nil;
    Je ne connaissais pas cette syntaxe, on trouve effectivement cela dans Indy
    Les rares globales sur des fonctions, je n'avais pas eu besoin d'initialiser à nil le pointeur, et je n'ai jamais de problème (D5 à D7)

    ton code qui utilise des variables globales et des indentations bizarres ce n'est pas évident à lire

  7. #7
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Bonjour,

    Vous pouvez essayer cela :

    LIEN 1
    LIEN 2

    Bye

Discussions similaires

  1. [PowerShell] Mettre l'ordinateur en veille
    Par heleplanchiste93 dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 26/09/2016, 14h40
  2. Réponses: 2
    Dernier message: 21/11/2011, 16h17
  3. Où se trouve l'écran de veille sous Windows ?
    Par beegees dans le forum Windows XP
    Réponses: 6
    Dernier message: 27/02/2008, 13h36
  4. Réponses: 1
    Dernier message: 06/02/2008, 14h37
  5. Mettre l'ordinateur en veille
    Par zentaf dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 14/11/2007, 21h05

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