Bonjour,
Je cherche comment mettre l'ordinateur en veille, en vraie veille, comme si on avait faitAinsi les ventilateurs etc s'eteindront.Citation:
demarrer/arreter/mettre en veille
Merci,
Harry
Version imprimable
Bonjour,
Je cherche comment mettre l'ordinateur en veille, en vraie veille, comme si on avait faitAinsi les ventilateurs etc s'eteindront.Citation:
demarrer/arreter/mettre en veille
Merci,
Harry
la commande windows est la suivante
Avec un ShellExecute, ca devrait faire l'affaire ! :)Code:rundll32.exe powrprof.dll,SetSuspendState
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é ?
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 !
une petite recherche sur DVP renvoi :
http://c.developpez.com/faq/bcb/?pag...illeordinateur
8)
Ahh, pas mal Laurent dardenne, par contre c'est du C++ et pas du Delphi :P
Faudras que je teste voir si il y a un equivalent delphi.
Certes, mais il y a pas mal d'usage d'API dans la VCL. Un petit tour sur MSDN :Citation:
Envoyé par Harry
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/power/base/setsystempowerstate.asp
Et hop !
:mouarf2:Citation:
Envoyé par Harry
Donc voici le code C++ :
Hé bien le voici traduit en Delphi (si, si :mrgreen:) :Code:SetSystemPowerState(False,True);
Je viens de me payer un fou rire à en avoir mal au ventre... :lol:Code:SetSystemPowerState(False,True);
:mouarf1:
Huhu, merci, je vais tester tout ça dès demain :D
Edit : Testé et... non, ca ne fais rien du tout
N'a aucun effet, je vais revenir aux Shellexecute. Dommage.Code:SetSystemPowerState(False, True);
Me renvoie toujours 2 (Dossier non trouvé je crois).Code:i := ShellExecute(0, 'open', PChar('rundll32.exe powrprof.dll,SetSuspendState'), nil, nil, SW_SHOWNORMAL);
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
Je pense que tu ne passes pas les bon paramètres.
la syntaxe en principe est:
Code:ShellExecute( 0, 'Open', PChar( SProg ), PChar( SCommande ),PChar( SRepertoire ), FenetreMode );
Effectivement tu peux rencontré une erreur:
renvoieCode:
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.
Il faut, comme indiquer dans MSDN, modifer les droits les droits de l'appelant par l'appel de AdjustTokenPrivileges .Citation:
Le client ne dispose pas d'un privilége nécessaire
Voici un exemple dans un contexte similaire :
http://delphi.developpez.com/faq/?pa...StopRunWindows
Je te laisse l'adapter.
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é ?
Pas du tout, ce serait un peu trop facile.Citation:
Envoyé par TicTacToe
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 !
En effet,ca fonctionne poue mettre en veille prolongée, je vais maintenant rechercher pour la veille légere et l'extinction.Code:ShellExecute(0, 'Open', PChar('rundll32.exe'), PChar('powrprof.dll,SetSuspendState'),PChar('C:\WINDOWS\System32'), SW_SHOWNORMAL);
Pour l'autre système : je suis en administrateur !
J'updaterais ce thread avec les informations complémentaires le moment voulu.