begin process at 2010 02 10 08:29:46
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Exécution

 > FERMER WINDOWS OU VOTRE SESSION EN UN SIMPLE DOUBLE-CLIC !

FERMER WINDOWS OU VOTRE SESSION EN UN SIMPLE DOUBLE-CLIC !


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Exécution Niveau :Débutant Date de création :21/10/2003 Date de mise à jour :21/10/2003 03:34:29 Vu / téléchargé :4 911 / 339

Auteur : JulioDelphi

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
hello

ptit exe ki se loge dans le systray, configurable, il ferme la session, reboot le pc et eteint le pc via un clic.
c un gadjet :D

Source

  • unit Closewin;
  • interface
  • uses
  • Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  • Dialogs, ExtCtrls, systray, Buttons, Menus, StdCtrls, SkinCtrls, shellapi, registry,
  • XPMan;
  • type
  • TFormMain = class(TForm)
  • PopupMenu1: TPopupMenu;
  • Eteindre1: TMenuItem;
  • Quitter1: TMenuItem;
  • About1: TMenuItem;
  • Timer1: TTimer;
  • Bevel1: TBevel;
  • Bevel2: TBevel;
  • Image1: TImage;
  • GroupBox1: TGroupBox;
  • Label1: TLabel;
  • spSkinLinkLabel1: TspSkinLinkLabel;
  • spSkinLinkLabel2: TspSkinLinkLabel;
  • SpeedButton1: TSpeedButton;
  • Session1: TMenuItem;
  • config1: TMenuItem;
  • XPManifest1: TXPManifest;
  • Reboot1: TMenuItem;
  • procedure FormCreate(Sender: TObject);
  • procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  • procedure FormDestroy(Sender: TObject);
  • procedure PopupMenuClick2(Sender: TObject);
  • procedure Timer1Timer(Sender: TObject);
  • procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  • Y: Integer);
  • procedure spSkinLinkLabel1Click(Sender: TObject);
  • procedure spSkinLinkLabel2Click(Sender: TObject);
  • procedure SpeedButton1Click(Sender: TObject);
  • private
  • { Private declarations }
  • public
  • { Public declarations }
  • end;
  • var
  • FormMain: TFormMain;
  • dblClickActionAlreadyLoaded, LoadWin, LoadWinAlreadyLoaded: boolean;
  • dblClickAction: integer;
  • procedure PowerOff;
  • procedure Reboot;
  • procedure SuspendSession;
  • implementation
  • uses Config;
  • {$R *.dfm}
  • {$R icones.res}
  • function WindowsRep():string;
  • var
  • WindowsDir : array[0..MAX_PATH] of Char;
  • nSize : DWord;
  • begin
  • nSize := SizeOf(WindowsDir);
  • GetWindowsDirectory(@WindowsDir, nSize);
  • result := WindowsDir;
  • end;
  • procedure PowerOff;
  • begin
  • winexec(Pchar(WindowsRep()+'\system32\shutdown.exe -s -f -t 00'),SW_SHOWNORMAL);
  • end;
  • procedure Reboot;
  • begin
  • winexec(PChar(WindowsRep()+'\system32\shutdown.exe' + ' -r -f -t 00'),SW_SHOWNORMAL);
  • end;
  • procedure SuspendSession;
  • begin
  • LockWorkStation();
  • end;
  • procedure TFormMain.spSkinLinkLabel2Click(Sender: TObject);
  • begin
  • ShellExecute(Handle,'OPEN','http://www.diabloporc.fr.st',Nil,Nil,SW_SHOW);
  • end;
  • procedure TFormMain.FormCreate(Sender: TObject);
  • var
  • Reg: TRegistry;
  • begin
  • if not fileexists(WindowsRep()+'\system32\shutdown.exe') then
  • begin
  • if MessageDlg('Le fichier "'+WindowsRep()+'\system32\shutdown.exe" est introuvable.'+#10+#13+'Désirez-vous le télécharger ?',mtError,[mbYes,mbNo],0)=mrNo then Begin MessageDlg('L''application ne peut continuer.',mtError,[mbOk],0); Application.terminate; end else
  • begin
  • MessageDlg('Redémarrez Closeme.exe apres avoir copié "shutdown.exe" dans le dossier "'+WindowsRep()+'\system32\"',mtWarning,[mbOk],0);
  • ShellExecute(Handle,'OPEN','http://diabloporc.free.fr/delphi/closeme/shutdown.exe',Nil,Nil,SW_SHOW);
  • Application.terminate;
  • end;
  • end;
  • Application.Icon.Handle := LoadIcon(hInstance,PChar('HAND'));
  • AjouteIconeTray(FormMain.handle,application.Icon.Handle,'Close Me !');
  • Reg := TRegistry.Create;
  • Reg.RootKey := HKEY_CURRENT_USER;
  • Reg.OpenKey('SOFTWARE\Diabloporc\CloseMe\', true);
  • if Reg.ValueExists('LoadWin') then LoadWin := Reg.ReadBool('LoadWin') else LoadWin := False;
  • Reg.Free;
  • Reg := TRegistry.Create;
  • Reg.RootKey := HKEY_CURRENT_USER;
  • Reg.OpenKey('SOFTWARE\Diabloporc\CloseMe\', true);
  • if Reg.ValueExists('dblClickAction') then dblClickAction := Reg.ReadInteger('dblClickAction') else dblClickAction := 0;
  • Reg.Free;
  • LoadWinAlreadyLoaded := true;
  • dblClickActionAlreadyLoaded := true;
  • Reg := TRegistry.Create;
  • Reg.RootKey := HKEY_CURRENT_USER;
  • Reg.OpenKey('SOFTWARE\Diabloporc\CloseMe\', true);
  • Reg.WriteString('Version', '1.1');
  • Reg.Free;
  • end;
  • procedure TFormMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  • begin
  • EnleveIconeTray();
  • end;
  • procedure TFormMain.FormDestroy(Sender: TObject);
  • begin
  • EnleveIconeTray();
  • end;
  • procedure TFormMain.Timer1Timer(Sender: TObject);
  • begin
  • formmain.hide;
  • timer1.Enabled := false;
  • end;
  • procedure TFormMain.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  • Y: Integer);
  • var
  • Pos:TPoint;
  • begin
  • GetCursorPos(Pos);
  • case X of
  • WM_LBUTTONDBLCLK:if dblClickAction=0 then PowerOff else if dblClickAction=1 then Reboot else SuspendSession;
  • WM_LBUTTONDOWN:;
  • WM_LBUTTONUP:;
  • WM_RBUTTONDBLCLK:;
  • WM_RBUTTONDOWN:;
  • WM_RBUTTONUP:PopupMenu1.Popup(Pos.X,Pos.Y);
  • end;
  • end;
  • procedure TFormMain.PopupMenuClick2(Sender: TObject);
  • begin
  • if Sender=Eteindre1 then PowerOff;
  • if Sender=Reboot1 then Reboot;
  • if Sender=Session1 then SuspendSession;
  • if Sender=Config1 then FormConfig.showmodal;
  • if Sender=Quitter1 then begin enleveiconetray(); Application.terminate; end;
  • if Sender=About1 then formmain.Show;
  • end;
  • procedure TFormMain.spSkinLinkLabel1Click(Sender: TObject);
  • begin
  • ShellExecute(Handle,'OPEN','mailto:diabloporc@laposte.net',Nil,Nil,SW_SHOW);
  • end;
  • procedure TFormMain.SpeedButton1Click(Sender: TObject);
  • begin
  • formmain.hide;
  • end;
  • end.
unit Closewin;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, systray, Buttons, Menus, StdCtrls, SkinCtrls, shellapi, registry,
  XPMan;

type
  TFormMain = class(TForm)
    PopupMenu1: TPopupMenu;
    Eteindre1: TMenuItem;
    Quitter1: TMenuItem;
    About1: TMenuItem;
    Timer1: TTimer;
    Bevel1: TBevel;
    Bevel2: TBevel;
    Image1: TImage;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    spSkinLinkLabel1: TspSkinLinkLabel;
    spSkinLinkLabel2: TspSkinLinkLabel;
    SpeedButton1: TSpeedButton;
    Session1: TMenuItem;
    config1: TMenuItem;
    XPManifest1: TXPManifest;
    Reboot1: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormDestroy(Sender: TObject);
    procedure PopupMenuClick2(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure spSkinLinkLabel1Click(Sender: TObject);
    procedure spSkinLinkLabel2Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FormMain: TFormMain;
  dblClickActionAlreadyLoaded, LoadWin, LoadWinAlreadyLoaded: boolean;
  dblClickAction: integer;
  procedure PowerOff;
  procedure Reboot;
  procedure SuspendSession;

implementation

uses Config;

{$R *.dfm}
{$R icones.res}

function WindowsRep():string;
var
    WindowsDir : array[0..MAX_PATH] of Char;
    nSize       : DWord;
begin
    nSize := SizeOf(WindowsDir);
    GetWindowsDirectory(@WindowsDir, nSize);
    result := WindowsDir;
end;

procedure PowerOff;
begin
winexec(Pchar(WindowsRep()+'\system32\shutdown.exe -s -f -t 00'),SW_SHOWNORMAL);
end;

procedure Reboot;
begin
winexec(PChar(WindowsRep()+'\system32\shutdown.exe' + ' -r -f -t 00'),SW_SHOWNORMAL);
end;

procedure SuspendSession;
begin
LockWorkStation();
end;

procedure TFormMain.spSkinLinkLabel2Click(Sender: TObject);
begin
ShellExecute(Handle,'OPEN','http://www.diabloporc.fr.st',Nil,Nil,SW_SHOW);
end;


procedure TFormMain.FormCreate(Sender: TObject);
var
  Reg: TRegistry;
begin
if not fileexists(WindowsRep()+'\system32\shutdown.exe') then
begin
 if MessageDlg('Le fichier "'+WindowsRep()+'\system32\shutdown.exe" est introuvable.'+#10+#13+'Désirez-vous le télécharger ?',mtError,[mbYes,mbNo],0)=mrNo then Begin MessageDlg('L''application ne peut continuer.',mtError,[mbOk],0); Application.terminate; end else
 begin
  MessageDlg('Redémarrez Closeme.exe apres avoir copié "shutdown.exe" dans le dossier "'+WindowsRep()+'\system32\"',mtWarning,[mbOk],0);
  ShellExecute(Handle,'OPEN','http://diabloporc.free.fr/delphi/closeme/shutdown.exe',Nil,Nil,SW_SHOW);
  Application.terminate;
 end;
end;

  Application.Icon.Handle := LoadIcon(hInstance,PChar('HAND'));
  AjouteIconeTray(FormMain.handle,application.Icon.Handle,'Close Me !');

  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_CURRENT_USER;
  Reg.OpenKey('SOFTWARE\Diabloporc\CloseMe\', true);
  if Reg.ValueExists('LoadWin') then LoadWin := Reg.ReadBool('LoadWin') else LoadWin := False;
  Reg.Free;

  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_CURRENT_USER;
  Reg.OpenKey('SOFTWARE\Diabloporc\CloseMe\', true);
  if Reg.ValueExists('dblClickAction') then dblClickAction := Reg.ReadInteger('dblClickAction') else dblClickAction := 0;
  Reg.Free;

  LoadWinAlreadyLoaded := true;
  dblClickActionAlreadyLoaded := true;

  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_CURRENT_USER;
  Reg.OpenKey('SOFTWARE\Diabloporc\CloseMe\', true);
  Reg.WriteString('Version', '1.1');
  Reg.Free;

end;

procedure TFormMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
EnleveIconeTray();
end;

procedure TFormMain.FormDestroy(Sender: TObject);
begin
EnleveIconeTray();
end;

procedure TFormMain.Timer1Timer(Sender: TObject);
begin
formmain.hide;
timer1.Enabled := false;
end;

procedure TFormMain.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
   Pos:TPoint;
begin
     GetCursorPos(Pos);
     case X of
         WM_LBUTTONDBLCLK:if dblClickAction=0 then PowerOff else if dblClickAction=1 then Reboot else SuspendSession;
         WM_LBUTTONDOWN:;
         WM_LBUTTONUP:;
         WM_RBUTTONDBLCLK:;
         WM_RBUTTONDOWN:;
         WM_RBUTTONUP:PopupMenu1.Popup(Pos.X,Pos.Y);
     end;
end;

procedure TFormMain.PopupMenuClick2(Sender: TObject);
begin
if Sender=Eteindre1 then PowerOff;
if Sender=Reboot1 then Reboot;
if Sender=Session1 then SuspendSession;
if Sender=Config1 then FormConfig.showmodal;
if Sender=Quitter1 then begin enleveiconetray(); Application.terminate; end;
if Sender=About1 then formmain.Show;
end;

procedure TFormMain.spSkinLinkLabel1Click(Sender: TObject);
begin
ShellExecute(Handle,'OPEN','mailto:diabloporc@laposte.net',Nil,Nil,SW_SHOW);
end;

procedure TFormMain.SpeedButton1Click(Sender: TObject);
begin
formmain.hide;
end;

end.

 Conclusion

je ne l'ai testé que sur win xp donc si ça ne marche pas ailleurs, mailez moi vos modifs ou mailez moi si vous n'y arrivez pas lol

bye merci

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture SCREENCAMTURE 0.2
Source avec Zip Source avec une capture JOUEZ : LIGHTS 1.4
Source avec Zip Source avec une capture FICLOCK : LOCKEZ LES FICHIERS
Source avec Zip Source avec une capture COMPOSANT TDBPTRACKBARVOLUME - JOUEZ AVEC LE SON !
Source avec Zip Source avec une capture COMPOSANT : TDBPLINKMAKER CREEZ DES .LNK

 Sources de la même categorie

Source avec Zip GÉNÉRATEUR DE JET DE DÉS par koriteki
Source avec Zip Source avec une capture LES FIBERS : DES THREADS NON PRÉEMPTÉS PAR LE SYSTÈME par Caribensila
Source avec Zip Source avec une capture UAC (USER ACCOUNT CONTROL) - EXÉCUTER UNE APPLICATION EN TAN... par ni69
BLOQUER LE TASKMGR SANS CLÉ DE REGISTRE par craftsystem
Source avec Zip UTILISER LES MESSAGES WINDOWS POUR GERER LE NOMBRE D'INSTANC... par lotfi213_b19

Commentaires et avis

Commentaire de ni69 le 20/11/2004 23:43:26

C'est un gadjet comme tu dis mais c'est bien pratique ;)

Commentaire de JulioDelphi le 21/11/2004 02:06:49 administrateur CS

hohoho ma source à 1an !
pour toi ni69, je la remets a jour si tu veux :D j'ai vu k'elle avait qqs problemes sur certains pc ... je vais eput etre utiliser un composant ABF pour etre sur ke les OS soient bien pris en compte, je la posterais en double ds la source (cette version + celle avec le compo)
merci pour la note :) ++

Commentaire de botelec le 15/09/2008 15:31:45

Salut Julio, ta source à maintenant 4 ans .. =)
je suis tombé dessus en cherchant une méthode pour intercepter un double clic sur une forme.
Je cherchais en effet une méthode différente de celle qui consiste à surcharger la procédure normale d'interception des messages.
(Suis je clair?)

je me suis donc intéressé de près à ta source,
et je pense qu'il y a grande confusion dans la procédure :

procedure TFormMain.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
var
   Pos:TPoint;
begin
  GetCursorPos(Pos);
  case X of
    WM_LBUTTONDBLCLK:
      if dblClickAction=0
        then PowerOff
        else if dblClickAction=1
               then Reboot
               else SuspendSession;
    WM_LBUTTONDOWN:;
    WM_LBUTTONUP:;
    WM_RBUTTONDBLCLK:;
    WM_RBUTTONDOWN:;
    WM_RBUTTONUP: PopupMenu1.Popup(Pos.X,Pos.Y);
  end;
end;

Tu fais une sélection par le case X avec comme résultats possible des constantes de message,
alors que X représente la valeur sur l'axe X de la position du curseur ...

Du coup j'ai cherché un peu, et je laisse un exemple.. pour ceux qui sont interressés:

*Placez ce code dans FormMouseUp pour intercepter un clic gauche relachés.

procedure TFormMain.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
var
   Pos:TPoint;
begin
  GetCursorPos(Pos);
  if Shift = [ssRight]
    then PopupMenu1.Popup(Pos.X,Pos.Y);    
    else if Shift = [ssRight,ssDouble]
           then if dblClickAction=0
                  then PowerOff
                  else if dblClickAction=1
                         then Reboot
                         else SuspendSession;
  end;
end;

BBye

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales