Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Economiseur et veille ecran [ Archives / API ] (michelroc)

jeudi 5 janvier 2006 à 20:40:28 | Economiseur et veille ecran

michelroc

Membre Club
bonjour,
Apres avoir recuperer sur ce site les api pour economiseur et mise en veille ecran, cela fonctionne en partie . J'ai des problemes pour la prise en comptes des valeurs apres un reboot je retrouve les valeurs par defaut . Merci pour vos infos et Bonne année à tous   Michel


unit Veille1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Mask, Spin;
type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    GroupBox3: TGroupBox;
    CheckBox1: TCheckBox;
    Button1: TButton;
    Timer1: TTimer;
    SpinEdit1: TSpinEdit;
    GroupBox5: TGroupBox;
    GroupBox6: TGroupBox;
    GroupBox7: TGroupBox;
    Button4: TButton;
    CheckBox2: TCheckBox;
    SpinEdit2: TSpinEdit;
    Label3: TLabel;
    Label6: TLabel;
    procedure Button4Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    { Déclarations privées }
    Procedure Test_Etat_Economiseur;
    Procedure Test_Etat_Ecran_Veille;
  public
    { Déclarations publiques }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormActivate(Sender: TObject);
Begin
  Test_Etat_Economiseur;
  Test_Etat_Ecran_Veille;
End;
Procedure TForm1.Test_Etat_Economiseur;
Var Temps ,mn:integer;
    Actif:Boolean;
begin
  Label1.Caption :='Economiseur Actif : ';
  Label2.Caption :='Temps : ';
  // Test si Economiseur ecran est actif
  SystemparametersInfo(SPI_GETSCREENSAVEACTIVE,0,@Actif,SPIF_SENDWININICHANGE);
  if Actif then Label1.Caption := Label1.Caption+' OUI'
           else Label1.Caption := Label1.Caption+' NON';
  // Temps de le mise en route de l'economiseur
  SystemparametersInfo(SPI_GETSCREENSAVETIMEOUT,0,@Temps,SPIF_SENDWININICHANGE);
  Label2.caption:=Label2.caption +IntToStr(Temps);
  mn := Temps Div 60;
  Label2.Caption := Label2.Caption + ' Secondes '+'('+IntToStr(mn)+' mn)';
  SpinEdit1.Text := IntToStr(Temps);
  If Actif then Begin
                  Label2.Enabled:=True;
                  CheckBox1.State:=cbChecked;
                End
           else Begin
                  Label2.Enabled:=False;
                  CheckBox1.State:=cbUnchecked;
                End;
End;
Procedure TForm1.Test_Etat_Ecran_Veille;
Var T2 :integer;
    Act:Boolean;
Begin
  Label3.Caption :='Ecran Veille Actif : ';
  Label6.Caption :='Temps : ';
  // Test si  ecran Veille est actif
  SystemparametersInfo(SPI_GETPOWEROFFACTIVE,0,@Act,SPIF_SENDWININICHANGE);
  if Act then Label3.Caption := Label3.Caption+' OUI'
         else Label3.Caption := Label3.Caption+' NON';
  // Temps de le mise en route de l'ecran veille
  SystemParametersInfo(SPI_GETPOWEROFFTIMEOUT, 0, @T2,SPIF_UPDATEINIFILE);
  Label6.caption:=Label6.caption +IntToStr(T2);
  Label6.Caption := Label6.Caption + ' Minutes ';
  SpinEdit2.Text := IntToStr(T2);
  If Act then Begin
                  Label6.Enabled:=True;
                  CheckBox2.State:=cbChecked;
                End
           else Begin
                  Label6.Enabled:=False;
                  CheckBox2.State:=cbUnchecked;
                End;
End;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
   If CheckBox1.State  = cbChecked Then CheckBox1.Caption := 'Activé l''économiseur'
                                   Else CheckBox1.Caption := 'Désactivé l''économiseur';
   If CheckBox2.State  = cbChecked Then CheckBox2.Caption := 'Activé l''écran de veille'
                                   Else CheckBox2.Caption := 'Désactivé l''écran de veille';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
   If SpinEdit1.text > '599940' then Spinedit1.Text := '600';
   If CheckBox1.State  = cbChecked Then
   Begin
    SystemparametersInfo(SPI_SETSCREENSAVEACTIVE,1,nil,SPIF_SENDWININICHANGE);
    SystemparametersInfo(SPI_SETSCREENSAVETIMEOUT,StrToInt(SpinEdit1.Text),nil,SPIF_SENDWININICHANGE);
   End
   Else
   Begin
    SystemparametersInfo(SPI_SETSCREENSAVEACTIVE,0,nil,SPIF_SENDWININICHANGE);
    SystemparametersInfo(SPI_SETSCREENSAVETIMEOUT,StrToInt(SpinEdit1.Text),nil,SPIF_SENDWININICHANGE);
   End;
   Test_Etat_Economiseur;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
   If SpinEdit2.text > '300' then Spinedit2.Text := '300';
   If CheckBox2.State  = cbChecked Then
   Begin
    SystemparametersInfo(SPI_SETPOWEROFFACTIVE,1,nil,SPIF_SENDWININICHANGE);
    SystemparametersInfo(SPI_SETPOWEROFFTIMEOUT,StrToInt(SpinEdit2.Text),nil,SPIF_SENDWININICHANGE);
   End
   Else
   Begin
    SystemparametersInfo(SPI_SETPOWEROFFACTIVE,0,nil,SPIF_SENDWININICHANGE);
    SystemparametersInfo(SPI_SETPOWEROFFTIMEOUT,0,nil,SPIF_SENDWININICHANGE);
   End;
   Test_Etat_Ecran_Veille;
end;
end.

vendredi 6 janvier 2006 à 06:52:12 | Re : Economiseur et veille ecran

neodelphi

Membre Club
Si tu parle des paramètres de l'écran de veille c'est a toi de les sauvegarder dans un fichier puis de les charger.

neodelphi

vendredi 6 janvier 2006 à 18:15:57 | Re : Economiseur et veille ecran

michelroc

Membre Club
Ces parametres peut-on les modifier dans la base de registre

Michel

samedi 7 janvier 2006 à 06:59:56 | Re : Economiseur et veille ecran

neodelphi

Membre Club
Tu doit pouvoir le faire, mais pourquoi ne pas enregistrer dans un fichier ? c'est tellement plus simple lol.

neodelphi

samedi 7 janvier 2006 à 20:21:02 | Re : Economiseur et veille ecran

michelroc

Membre Club

Bon alors j'ai ecris ce qui suis
Le fichier je le lance au demarrage du PC je par la cle HKEY_LOCAL_MACHINE\....\....\...\RUN

Je constate que le fichier m'est pas lu correctement ??? j'ai la valeur 600  pour V1 alors que dans mon ficheir *.TXT j'ai mis 30

Le code:


// Mise en fonction Economiseur et(ou) veille ECRAN
// ROCHER MIchel le 07/01/2006  michel.rocher.1@cegetel.net
// Windows XP Fam
// DELPHI 2005
// Fichier  A mettre sous        C:\Windows\System32\MR_MARCHE_MEV.EXE
// Fichier Associé A mettre sous C:\Windows\System32\MR_CONFIG_MEV.TXT
// Les 2 premieres lignes de ce fichier *.TXT doivent contenir les valeurs
// Temps Economiseur et temps pour mise en vielle.
// Temps Ecran Veille;    // Mini/Maxi 0-599940  9999 mn
// Temps Extinction Ecran // Maxi/Maxi 0-18000   5h00
// Mise en service:
//  - Mettre dans fichier de demarrage ou
//  - Uiliser le fichier Modif Base de registre
// HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\run

program MR_MARCHE_MEV;
 {$APPTYPE CONSOLE}
uses
  SysUtils,Messages,
  ShellApi,Dialogs,
  Windows;
Var   F : TextFile;
  V1,V2 : String;
      i : Integer;
begin
  // Lecture du fichier text contenant les 2 valeur V1 et V2
   AssignFile(F, 'c:\Windows\System32\MR_CONFIG_MEV.TXT');
  {$I-}
   Reset(F);
  {$I+}
   If (IOResult=0) Then
    Begin
     V1:='';        // Temps Economiseur
     V2:='';        //Temps Extinction Ecran
     Readln(F,V1);
     Readln(F,V2);
     CloseFile(f);
    // Teste si contenu est Numerique  sinon Force à 600
    If V1 = '' then V1 := '700';
    For i:=1 to Length(V1) Do
         If NOT(V1[i] In['0'..'9']) Then V1 := '600';
    // Teste si contenu est numerique  sinon force a 0
    If V2 = '' then V2 := '0';
    For i:=1 to Length(V2) Do
         If NOT(V2[i] In['0'..'9']) Then V2 := '0';
    // Ici Test du contenu V1 et V2 avec limites
    If (StrToInt(V1)> 599940) Or (StrToInt(V1)< 0) Then V1 := '600';
    If (StrToInt(V2)> 18000)  Or (StrToInt(V2)< 0) Then V2 := '0';
    // Active Ecomomiseur ecran
    SystemparametersInfo(SPI_SETSCREENSAVEACTIVE,1,nil,SPIF_SENDWININICHANGE);
    SystemparametersInfo(SPI_SETSCREENSAVETIMEOUT,StrToInt(V1),nil,SPIF_SENDWININICHANGE);
    // Active Ecran vielle
    SystemparametersInfo(SPI_SETPOWEROFFACTIVE,1,nil,SPIF_SENDWININICHANGE);
    SystemparametersInfo(SPI_SETPOWEROFFTIMEOUT,StrToInt(V2),nil,SPIF_SENDWININICHANGE);
    End;
  Halt;
end.

 
Michel


dimanche 8 janvier 2006 à 11:26:44 | Re : Economiseur et veille ecran

neodelphi

Membre Club
Si tu as 600 c'est que tu détecte pas V1 comme entier.

For i:=1 to Length(V1) Do
         If NOT(V1[i] In['0'..'9']) Then V1 := '600';

Peut-être que le dernier caractère de V1 est un retour chariot, mais je ne suis pas sur. Essaye de forcer la conversion en entier de V1, pour voir si tu déclenche une exception.

neodelphi



Cette discussion est classé dans : end, caption, procedure, begin, veille


Répondre à ce message

Sujets en rapport avec ce message

Problème Econversion Error lors de l'affichage d'une info bulle dans une fenetre MDIChild dans une DLL [ par DarkSky ] Salut a tous,j'ai créer un projet MDI avec Delphi 6 donc les fenetre MDi Filles sont dans une DLL.j'ai une erreur EConversionError a la place de l'aff Hints dans une DLL [ par almi ] J'ai une fenêtre (TForm) qui fonctionne parfaitement dans mon executable.Si je la place dans une DLL, j'obtiens le message :Ne peut assigner TFont à T pb d'affichage d'un TChart [ par Pegase20 ] bonjour, J'affiche une autre fiche qui contient un graphique (créé à l'aide d'un TChart) quand je clique sur un bouton.Mon pb c'est que le graph ne MDI Filles dans une DLL [ par DarkSky ] ..::= DarkSky =::..Salut almi,j'ai exactement le même problème que toi (Hint) sur l'utilisation de MDI Filles dans une DL Probleme lecture/ecriture dans fichier. [ par Cybric ] Bonsoir.Je débute avec DELPHI, donc novice.Je recopie tel quel le code de lecture de fichier trouvé dans "tout en poche" et cela ne fonctionne pas. Le projet de chat avec delphi 7 [ par dk ] hello every body j'aimerais faire un chat mais voila le probleme (si on peut dire) c ke g delphi 7 avec comme composant installer Tcpserver et Tcpclie plein derreur a la fermeture de mon prog qui font lanter windows [ par dk ] voila javais deja eu qq petits soucis avec le prjet de chat que je suis en train de realiser mais jamais a cette ampleur lol, qd je lance mon prog ca Changer la forme de l'animation matrix [ par Also know as ] Bonjour,Voici une méthode permettant de créer une animation à la matrix sans sa police.Il suffit juste d'appeler sa Form MainForm, mettre un memo et c Reutiliser une procedure [ par jimmy69 ] Bonjour a tous,Voila je debute avec delphi et je suis un peu fade :-) !!!!J'aimerais savoir s'il etait possible de reutiliser une procedure recement d Aide pour appelé des procédures [ par prevok ] Lorsque je démarre le programme, pas de problème, je peux aller choisir dans le menu l'option que je veux, qui appelle une procedure, mais quand de ce


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,499 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.