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

API, COM et SDKs Delphi Discussion :

Mettre l'ordi en veille [FAQ]


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Par défaut Mettre l'ordi en veille
    Bonjour,

    Je cherche comment mettre l'ordinateur en veille, en vraie veille, comme si on avait fait
    demarrer/arreter/mettre en veille
    Ainsi les ventilateurs etc s'eteindront.

    Merci,

    Harry

  2. #2
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    la commande windows est la suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rundll32.exe powrprof.dll,SetSuspendState
    Avec un ShellExecute, ca devrait faire l'affaire !
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  3. #3
    Membre éprouvé
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Par défaut
    Ahh, merci, ça m'a l'air prometteur, je teste des que possible et je vous dis si c'est bon.

    Oui, c'est un b on début, tu connaitrais pas par hazard la version 'Non prolongée' qu'on peux reveiller en bougeant la souris mais qui coupe CPU/ventilos etc mais garde la ram et reseau activé ?

  4. #4
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Désolé je n'ai pas ca sous la main

    Mais ca risque d'être plus compliqué que la mise en veille prolongée puisque il s'agit d'un config. spécifique de mise en veille légère.

    Je te conseille de faire une recherche sur
    [rundll32.exe powrprof.dll]
    pour voir éventuellement quels sont les paramètres dispo derriere, pour appeler une config spécifique.

    Après, si la config spécifique doit être construite via le prog, j'imagine qu'il faut rechercher via la base de registre.

    bon courage !
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  5. #5
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    une petite recherche sur DVP renvoi :
    http://c.developpez.com/faq/bcb/?pag...illeordinateur

    8)

  6. #6
    Membre éprouvé
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Par défaut
    Ahh, pas mal Laurent dardenne, par contre c'est du C++ et pas du Delphi

    Faudras que je teste voir si il y a un equivalent delphi.

  7. #7
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Harry
    Ahh, pas mal Laurent dardenne, par contre c'est du C++ et pas du Delphi
    Certes, mais il y a pas mal d'usage d'API dans la VCL. Un petit tour sur MSDN :
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/power/base/setsystempowerstate.asp

    Et hop !

  8. #8
    Membre Expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Par défaut
    Citation Envoyé par Harry
    Ahh, pas mal Laurent dardenne, par contre c'est du C++ et pas du Delphi

    Faudras que je teste voir si il y a un equivalent delphi.


    Donc voici le code C++ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetSystemPowerState(False,True);
    Hé bien le voici traduit en Delphi (si, si ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetSystemPowerState(False,True);
    Je viens de me payer un fou rire à en avoir mal au ventre...

  9. #9
    Membre éprouvé
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Par défaut

    Huhu, merci, je vais tester tout ça dès demain


    Edit : Testé et... non, ca ne fais rien du tout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetSystemPowerState(False, True);
    N'a aucun effet, je vais revenir aux Shellexecute. Dommage.

  10. #10
    Membre éprouvé
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    i := ShellExecute(0, 'open', PChar('rundll32.exe powrprof.dll,SetSuspendState'), nil, nil, SW_SHOWNORMAL);
    Me renvoie toujours 2 (Dossier non trouvé je crois).

    Vous avez une idée du Shellexecute à utiliser dans ces cas ?

    J'ai deja essayé plein de combinaisons (chemins complets, etc.. ) et un mailto marche bien, la commande marche bien dans 'Demarrer/executer'.

    Merci

  11. #11
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Je pense que tu ne passes pas les bon paramètres.

    la syntaxe en principe est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute( 0, 'Open', PChar( SProg ), PChar( SCommande ),PChar( SRepertoire ), FenetreMode );
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  12. #12
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Effectivement tu peux rencontré une erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    program veille;
     
    {$APPTYPE CONSOLE}
     
    uses
      SysUtils,Windows;
     
    begin
     if not SetSystemPowerState(True,False)
      then writeln(SysErrorMessage(GetLastError));
     Readln;
    end.
    renvoie
    Le client ne dispose pas d'un privilége nécessaire
    Il faut, comme indiquer dans MSDN, modifer les droits les droits de l'appelant par l'appel de AdjustTokenPrivileges .
    Voici un exemple dans un contexte similaire :
    http://delphi.developpez.com/faq/?pa...StopRunWindows

    Je te laisse l'adapter.

  13. #13
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Effectivement c'est mieux en passant par les API

    J'en profite pour dire un merci à Laurent. Car la fonction citée m'interesse aussi.

    AdjustTokenProvilege permet bien de mettre les droits admins sur le poste, même si le user est loggué avec des droits restreints ?

    Est-ce que cela signifie, que si pendants ce temps là (pdt que l'appli à ajusté les droits), le user peut faire tout ce qu'il veut sur sa machine, ou les droits ne sont donnés que pour le programme lancé ?
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  14. #14
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par TicTacToe
    AdjustTokenProvilege permet bien de mettre les droits admins sur le poste, même si le user est loggué avec des droits restreints ?
    Pas du tout, ce serait un peu trop facile.
    Je ne suis pas trop à l'aise sur ce sujet mais il me semble que les droits à ajouter sont dépendants du profile utilisateur.
    En procédant ainsi, un utilisateur ne peut avoir plus de droits qu'on lui autorise. Il s'agit de droits au niveau du process et pas de l'utilisateur mais la limite est assez mince.
    Bien qu'un programme équivalent à SU d'unix soit possible sous NT mais là je ne pas les compétence pour aller + loin.
    Et justement cela manque ce type de tuto sur DVP !

  15. #15
    Membre éprouvé
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Par défaut
    En effet,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute(0, 'Open', PChar('rundll32.exe'), PChar('powrprof.dll,SetSuspendState'),PChar('C:\WINDOWS\System32'), SW_SHOWNORMAL);
    ca fonctionne poue mettre en veille prolongée, je vais maintenant rechercher pour la veille légere et l'extinction.

    Pour l'autre système : je suis en administrateur !

    J'updaterais ce thread avec les informations complémentaires le moment voulu.

Discussions similaires

  1. [Multi Tread] mettre l'application en veille?
    Par airod dans le forum Général Python
    Réponses: 10
    Dernier message: 13/02/2010, 16h37
  2. Mettre en place une veille
    Par Pepe31 dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 5
    Dernier message: 03/01/2009, 19h47
  3. Mettre l'ordinateur en veille
    Par zentaf dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 14/11/2007, 21h05
  4. Comment faire pour mettre l'ecran en veille ?
    Par March' dans le forum MFC
    Réponses: 6
    Dernier message: 29/08/2002, 14h25

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