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 !

FERMER GROUPE DE PROGRAMME AVEC UNE TOUCHE


Information sur la source

Catégorie :Exécution Classé sous : kill, killapp, fermer, cacher, programme Niveau : Initié Date de création : 05/12/2007 Date de mise à jour : 05/12/2007 12:43:27 Vu / téléchargé: 3 587 / 257

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Pour des raisons pratiques ou pour ceux qui surfent ou glandent au bureau et qui ne veulent pas que ça se remarque.

Voici un petit programme qui permet de killer un ensemble de programme par l'appui d'une touche que vous pouvez configurer.

C'est beaucoup plus rapide de fermer IE en appuyant sur une touche que d'attraper sa souris pour viser la petite croix.

Par défaut :                                  
Appuyez 3 fois sur * (pavé numérique) pour lancer la config du programme
Appuyez 2 fois sur - pour killer Internet Explorer

Modifier NbAppuis et NbAppuisConfig pour choisir combien de fois appuyer pour lancer l'action
 

Source

  • unit Unit1;
  • {Par défaut :
  • Appuyez 3 fois sur * (pavé numérique) pour lancer la config du programme
  • Appuyez 2 fois sur - pour killer Internet Explorer
  • Modifier NbAppuis et NbAppuisConfig pour choisir combien de fois appuyer pour lancer l'action }
  • interface
  • uses
  • Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  • Dialogs, ExtCtrls, StdCtrls, Buttons, TlHelp32, ButtonWST ;
  • const
  • NbAppuis = 2;
  • NbAppuisConfig = 3;
  • type
  • TForm1 = class(TForm)
  • TimRazTouches: TTimer;
  • TimDetectTouches: TTimer;
  • Label1: TLabel;
  • ediProcessus1: TEdit;
  • Label2: TLabel;
  • ediTouche: TEdit;
  • ediProcessus2: TEdit;
  • ediProcessus3: TEdit;
  • ediProcessus4: TEdit;
  • ediProcessus5: TEdit;
  • SpeedButton1: TSpeedButton;
  • SpeedButton2: TSpeedButton;
  • procedure TimRazTouchesTimer(Sender: TObject);
  • procedure TimDetectTouchesTimer(Sender: TObject);
  • procedure ediToucheKeyDown(Sender: TObject; var Key: Word;
  • Shift: TShiftState);
  • procedure SpeedButton2Click(Sender: TObject);
  • procedure FormCreate(Sender: TObject);
  • procedure SpeedButton1Click(Sender: TObject);
  • private
  • { Déclarations privées }
  • Touches : array [1..NbAppuis * 2] of Integer;
  • TouchesConfig : array [1..NbAppuisConfig * 2] of Integer;
  • Touche: Integer;
  • procedure AjouterTouche(const Valeur: Integer; var TouchesLoc : array of Integer);
  • public
  • { Déclarations publiques }
  • end;
  • var
  • Form1: TForm1;
  • PasEncoreCachee: Boolean = True;
  • implementation
  • {$R *.dfm}
  • procedure TForm1.AjouterTouche(const Valeur: Integer; var TouchesLoc : array of Integer);
  • var i: Integer;
  • begin
  • for i:= 0 to High(TouchesLoc) do
  • begin
  • if (TouchesLoc[i] = 0) then
  • begin
  • if (i = 0) or (TouchesLoc[i - 1] <> Valeur) then
  • begin
  • TouchesLoc[i]:= Valeur;
  • TimRazTouches.Enabled:= False;
  • TimRazTouches.Enabled:= True;
  • end;
  • Break;
  • end;
  • end;
  • end;
  • procedure TForm1.TimRazTouchesTimer(Sender: TObject);
  • begin
  • FillChar(Touches, SizeOf(Touches), 0);
  • FillChar(TouchesConfig, SizeOf(TouchesConfig), 0);
  • end;
  • function KillProcess(const ProcessName : string) : boolean;
  • var ProcessEntry32 : TProcessEntry32;
  • HSnapShot : THandle;
  • HProcess : THandle;
  • begin
  • Result := False;
  • HSnapShot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  • if HSnapShot = 0 then Exit;
  • ProcessEntry32.dwSize := sizeof(ProcessEntry32);
  • if Process32First(HSnapShot, ProcessEntry32) then
  • repeat
  • if CompareText(ProcessEntry32.szExeFile, ProcessName) = 0 then
  • begin
  • HProcess := OpenProcess(PROCESS_TERMINATE, False, ProcessEntry32.th32ProcessID);
  • if HProcess <> 0 then
  • begin
  • Result := TerminateProcess(HProcess, 0);
  • CloseHandle(HProcess);
  • end;
  • Break;
  • end;
  • until not Process32Next(HSnapShot, ProcessEntry32);
  • CloseHandle(HSnapshot);
  • end;
  • procedure TForm1.TimDetectTouchesTimer(Sender: TObject);
  • begin
  • if PasEncoreCachee then
  • Visible:= False; //ShowWindow(Form1.Handle ,SW_HIDE);
  • PasEncoreCachee:= False;
  • if (GetKeyState(Touche) <> 0) and (GetKeyState(Touche) <> 1) then
  • begin
  • AjouterTouche(1, Touches);
  • if Touches[High(Touches)] <> 0 then
  • begin
  • FillChar(Touches, SizeOf(Touches), 0);
  • if ediProcessus1.Text <> '' then
  • KillProcess(ediProcessus1.Text);
  • if ediProcessus2.Text <> '' then
  • KillProcess(ediProcessus2.Text);
  • if ediProcessus3.Text <> '' then
  • KillProcess(ediProcessus3.Text);
  • if ediProcessus4.Text <> '' then
  • KillProcess(ediProcessus4.Text);
  • if ediProcessus5.Text <> '' then
  • KillProcess(ediProcessus5.Text);
  • end;
  • end
  • else
  • AjouterTouche(2, Touches);
  • if (GetKeyState(VK_MULTIPLY) <> 0) and (GetKeyState(VK_MULTIPLY) <> 1) then
  • begin
  • AjouterTouche(1, TouchesConfig);
  • if TouchesConfig[High(TouchesConfig)] <> 0 then
  • begin
  • FillChar(TouchesConfig, SizeOf(TouchesConfig), 0);
  • Visible:= True;
  • end;
  • end
  • else
  • AjouterTouche(2, TouchesConfig);
  • end;
  • procedure TForm1.ediToucheKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  • begin
  • ediTouche.Text:= IntToStr(Key);
  • end;
  • procedure TForm1.SpeedButton2Click(Sender: TObject);
  • begin
  • Visible:= False;
  • Touche:= StrToInt(ediTouche.Text);
  • end;
  • procedure TForm1.FormCreate(Sender: TObject);
  • begin
  • Touche:= 109;
  • ediTouche.Text:= IntToStr(Touche);
  • end;
  • procedure TForm1.SpeedButton1Click(Sender: TObject);
  • begin
  • MessageDlg('Hugo Bulthé : hugo.bulthe@free.fr'+#13#10#13#10+'Pour être tranquille au bureau :-)'+#13#10#13#10+'Renseignez le nom des processus à killer.'+#13#10+'Pour changer la touche qui lance l''action, placez-vous dans la zone code touche et appuyez sur une touche.'+#13#10#13#10+'Pour killer tous les processus renseignés, appuyez plusieurs fois sur la touche configurée.', mtInformation, [mbOK], 0);
  • end;
  • end.
unit Unit1;

  {Par défaut :                                   
   Appuyez 3 fois sur * (pavé numérique) pour lancer la config du programme
   Appuyez 2 fois sur - pour killer Internet Explorer
   Modifier NbAppuis et NbAppuisConfig pour choisir combien de fois appuyer pour lancer l'action }

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Buttons, TlHelp32, ButtonWST ;

const
  NbAppuis = 2;
  NbAppuisConfig = 3;

type

  TForm1 = class(TForm)
    TimRazTouches: TTimer;
    TimDetectTouches: TTimer;
    Label1: TLabel;
    ediProcessus1: TEdit;
    Label2: TLabel;
    ediTouche: TEdit;
    ediProcessus2: TEdit;
    ediProcessus3: TEdit;
    ediProcessus4: TEdit;
    ediProcessus5: TEdit;                               
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    procedure TimRazTouchesTimer(Sender: TObject);
    procedure TimDetectTouchesTimer(Sender: TObject);
    procedure ediToucheKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure SpeedButton2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
  private
    { Déclarations privées }
    Touches : array [1..NbAppuis * 2] of Integer;
    TouchesConfig : array [1..NbAppuisConfig * 2] of Integer;
    Touche: Integer;

    procedure AjouterTouche(const Valeur: Integer; var TouchesLoc : array of Integer);
  public
    { Déclarations publiques }
  end;                        

var
  Form1: TForm1;
  PasEncoreCachee: Boolean = True;

implementation

{$R *.dfm}
procedure TForm1.AjouterTouche(const Valeur: Integer; var TouchesLoc : array of Integer);
var i: Integer;
begin
  for i:= 0 to High(TouchesLoc) do
  begin
    if (TouchesLoc[i] = 0) then
    begin
      if (i = 0) or (TouchesLoc[i - 1] <> Valeur) then
      begin
        TouchesLoc[i]:= Valeur;
        TimRazTouches.Enabled:= False;
        TimRazTouches.Enabled:= True;
      end;
      Break;
    end;
  end;
end;

procedure TForm1.TimRazTouchesTimer(Sender: TObject);
begin
  FillChar(Touches, SizeOf(Touches), 0);
  FillChar(TouchesConfig, SizeOf(TouchesConfig), 0);
end;

function KillProcess(const ProcessName : string) : boolean;
var ProcessEntry32 : TProcessEntry32;
    HSnapShot : THandle;
    HProcess : THandle;
begin
  Result := False;
  HSnapShot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  if HSnapShot = 0 then Exit;
  ProcessEntry32.dwSize := sizeof(ProcessEntry32);
  if Process32First(HSnapShot, ProcessEntry32) then
  repeat
    if CompareText(ProcessEntry32.szExeFile, ProcessName) = 0 then
    begin
      HProcess := OpenProcess(PROCESS_TERMINATE, False, ProcessEntry32.th32ProcessID);
      if HProcess <> 0 then
      begin
        Result := TerminateProcess(HProcess, 0);
        CloseHandle(HProcess);
      end;
      Break;
    end;
  until not Process32Next(HSnapShot, ProcessEntry32);
  CloseHandle(HSnapshot);
end;


procedure TForm1.TimDetectTouchesTimer(Sender: TObject);
begin
  if PasEncoreCachee then
    Visible:= False; //ShowWindow(Form1.Handle ,SW_HIDE);

  PasEncoreCachee:= False;
  if (GetKeyState(Touche) <> 0) and (GetKeyState(Touche) <> 1) then
  begin
    AjouterTouche(1, Touches);
    if Touches[High(Touches)] <> 0 then
    begin
      FillChar(Touches, SizeOf(Touches), 0);
      if ediProcessus1.Text <> '' then
        KillProcess(ediProcessus1.Text);
      if ediProcessus2.Text <> '' then
        KillProcess(ediProcessus2.Text);
      if ediProcessus3.Text <> '' then
        KillProcess(ediProcessus3.Text);
      if ediProcessus4.Text <> '' then
        KillProcess(ediProcessus4.Text);
      if ediProcessus5.Text <> '' then
        KillProcess(ediProcessus5.Text);
    end;
  end
  else
    AjouterTouche(2, Touches);

  if (GetKeyState(VK_MULTIPLY) <> 0) and (GetKeyState(VK_MULTIPLY) <> 1) then
  begin
    AjouterTouche(1, TouchesConfig);
    if TouchesConfig[High(TouchesConfig)] <> 0 then
    begin
      FillChar(TouchesConfig, SizeOf(TouchesConfig), 0);
      Visible:= True;
    end;
  end
  else
    AjouterTouche(2, TouchesConfig);
end;

procedure TForm1.ediToucheKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  ediTouche.Text:= IntToStr(Key);
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
  Visible:= False;
  Touche:= StrToInt(ediTouche.Text);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Touche:= 109;
  ediTouche.Text:= IntToStr(Touche);
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  MessageDlg('Hugo Bulthé : hugo.bulthe@free.fr'+#13#10#13#10+'Pour être tranquille au bureau :-)'+#13#10#13#10+'Renseignez le nom des processus à killer.'+#13#10+'Pour changer la touche qui lance l''action, placez-vous dans la zone code touche et appuyez sur une touche.'+#13#10#13#10+'Pour killer tous les processus renseignés, appuyez plusieurs fois sur la touche configurée.', mtInformation, [mbOK], 0);
end;

end.

Conclusion

Le code n'est pas super optimisé mais bon ça suffit amplement.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

05 décembre 2007 12:43:27 :
Oubli ptit commentaire

Commentaires et avis

signaler à un administrateur
Commentaire de John Dogget le 05/12/2007 14:02:18

Bon code :)
Cela dit attention aux processus à tuer, parce que c'est une methode assez "bourrin" ...
Suivant les processus, ça peut passer outre des liberations de mémoire, l'enregistrement de certains fichiers de config etc.

signaler à un administrateur
Commentaire de Huugooo le 05/12/2007 14:07:33

Oui oui, jme doute. Mais bon avec IE ont est plus à ça prêt =)

signaler à un administrateur
Commentaire de John Dogget le 05/12/2007 14:22:54

Et sinon, ça te sers à quoi de masquer la fenetre du programme ??
C'est pas terrible comme idée ...

On risque de lancer dix fois le truc alors qu'il est déjà en cours.
Vu le code, on le lance, et il se passe ... rien !

signaler à un administrateur
Commentaire de Huugooo le 06/12/2007 10:20:41

Oui il se passe rien et c'est le but justement. En tout cas il servira plus qu'un crackeur de score au pinball...
Il sert déja à mes collègues.

signaler à un administrateur
Commentaire de nethacker le 14/12/2007 10:10:43 8/10

Counter Strike :p merci pour cette source en tout cas ! je l'ai trouvé tres utile ^^

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Impossible de fermer le programme [ par manu00 ] Salut,J'ai un petit soucis.J'ai fais un programme avec un boucle dedans qui doit executer un truc tout les XX secondes.Seulement, a chaque boucle (et Cacher la fenêtre principale au démarrage du programme [ par rguef ] Bonjour,Je n'arrive pas à cacher la fenêtre principale de mon programme à son démarrage, j'utilisais Systray de la RXLib : elle était visible, j'ai te j'ai besoin d'aide "fermer une application avec une autre application kill process" [ par titoleboss ] Titolebossj'aimerai avant toute chose vous remercier par ce que garce au site et a tous ce qui le font j'ai pu apprendre beaucoup de chose ...enfin j Lancer un programme externe [ par Francky23012301 ] Salut à tous Imaginez que vous avez une FORM et deux boutons OUVRIR FERMER. Ma question est quelle est la source pour que : *Quand on clique sur OUV Repérer un programme inactif et le fermer... [ par marignan1515 ] Bonjour,Voilà mon problème. Je veux créer une application qui chaîne plusieurs diaporamas faits par des enfants. Ces diaporamas sont en exe... avez-vo Fermer un process sans sa DLL [ par christophedlr ] Bonjour,Pour mon programme je voudrais faire un système de mise à jour.Je pensais à faire une DLL, mais on arrive à ma question.Quand on provoque la f Cacher un mot de passe... [ par TiDaN326 ] Bonjour à tous...J'ai un léger problème de sécurité... J'ai un programme qui accède à une base de donnée... Évidemment, le mot de passe d'accès à cett fermer un programme en stoppant son processus [ par li ] et bien toute est dans le non jaimerais depuis mon application fermer des processus&nbsp;; celui de norton par exemple ou toute autre programme alors Problème de rafraichisement d'un programme qui est en systray..... [ par wapjulien ] J'ai un programme qui roule en web, puis je le voulais en systray. Donc, le programme web roule dans un browser qui est dans un programme Delphi 6. Do Apres clic sur un bouton, metrte le programme en barre des taches et faire apparaitre un message. [ par Yil2201 ] Salut, tout d'abord, merci.Je cherche &#224; savoir comment, apres clic sur un bouton que l'on va appeler Button1, le programme pourrrait se mettre da


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,390 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é.