begin process at 2010 02 10 02:22:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Débutant(e)

 > 

Boucle " repeat until " qui freeze mon exe


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Boucle " repeat until " qui freeze mon exe

mercredi 30 janvier 2008 à 15:02:01 | Boucle " repeat until " qui freeze mon exe

ArKaLiTy

Bonjour, j'ai une petite procédure qui permet de détecter lorsque un programme défini est lancé. Lorsqu'un checkbox est coché, la procédure surveille tous les processus en cours d'éxecution et les compare un à un via le contenu d'un editbox. Le problème est que lorsque la boucle est éxecuté, mon application se gèle completement et je ne peux rien faire jusqu'a ce que l'application cible soit éxecuté. Si quelqu'un sait comment faire pour que ma boucle ne bloque pas mon programme ... ^^ procedure TForm1.CheckBox1Click(Sender: TObject); var TheTarget: String; SnapShot: Cardinal; ProcessEntry: TProcessEntry32; begin if Checkbox1.Checked = False then exit; repeat //Création de "l'instantané" SnapShot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //En cas d'erreur on sort If SnapShot = 0 then Exit; ProcessEntry.dwSize := SizeOf(ProcessEntry); //Lecture du premier processus de la liste If Process32First(SnapShot, ProcessEntry) then //Tant qu'il reste un processus, ajouter son nom à la liste while Process32Next(SnapShot, ProcessEntry) do begin TheTarget := ProcessEntry.szExeFile; //On récupère dans la variable le nom d'un des processus en cours if TheTarget = Edit1.Text then //Si ce processus est celui recherché, on entre dans la boucle begin Showmessage('Le processus ' + Edit1.Text + ' a été lancé.'); Checkbox1.Checked := False; Exit; end; end; //Libération de l'instantané CloseHandle(SnapShot); Sleep(50); until TheTarget = Edit1.Text; end;
mercredi 30 janvier 2008 à 15:08:18 | Re : Boucle " repeat until " qui freeze mon exe

ArKaLiTy

Oula, petit problèem d'édition ^^''''
J'espere que ce sera mieux cette fois :

( Reprise du message précedent )

Bonjour, j'ai une petite procédure qui permet de détecter lorsque un programme défini est lancé.
Lorsqu'un checkbox est coché, la procédure surveille tous les processus en cours d'éxecution et les compare un à un via le contenu d'un editbox.
Le problème est que lorsque la boucle est éxecuté, mon application se gèle completement et je ne peux rien faire jusqu'a ce que l'application cible soit éxecuté.
Si quelqu'un sait comment faire pour que ma boucle ne bloque pas mon programme ...

procedure TForm1.CheckBox1Click(Sender: TObject);
var
  TheTarget: String;
  SnapShot: Cardinal;
  ProcessEntry: TProcessEntry32;
begin

  if Checkbox1.Checked = False then exit;

    repeat

  //Création de "l'instantané"
  SnapShot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  //En cas d'erreur on sort
  If SnapShot = 0 then Exit;

  ProcessEntry.dwSize := SizeOf(ProcessEntry);

  //Lecture du premier processus de la liste
  If Process32First(SnapShot, ProcessEntry) then
    //Tant qu'il reste un processus, ajouter son nom à la liste
    while Process32Next(SnapShot, ProcessEntry) do
      begin
       TheTarget := ProcessEntry.szExeFile;   //On récupère dans la variable le nom d'un des processus en cours
        if TheTarget = Edit1.Text then        //Si ce processus est celui recherché, on entre dans la boucle
          begin
            Showmessage('Le processus ' + Edit1.Text + ' a été lancé.');
            Checkbox1.Checked := False;
            Exit;
          end;
      end;

  //Libération de l'instantané
  CloseHandle(SnapShot);

  Sleep(50);

    until TheTarget = Edit1.Text;

end;




désolé si l'affichage ne passe pas :/

mercredi 30 janvier 2008 à 16:00:02 | Re : Boucle " repeat until " qui freeze mon exe

Nicolas___

Réponse acceptée !
De tete parce que j'ai pas Delphi : Application.ProcessMessage ( ca bloque plus mais c vachement plus lent ! )

Ou alors tu passe par un Thread ( ya un tuto de GrandVizir bien fait sur ce sujet )

Ciao
mercredi 30 janvier 2008 à 16:01:30 | Re : Boucle " repeat until " qui freeze mon exe

Nicolas___

euh dsl ...  Application.ProcessMessage est bien sur a mettre dans ta boucle

et prq met tu un sleep(50) dans ta boucle ?
mercredi 30 janvier 2008 à 17:47:12 | Re : Boucle " repeat until " qui freeze mon exe

f0xi

Membre Club Administrateur CodeS-SourceS


regarde un peu au niveau des sources qui font la même chose y'en a des trés bonnes.



deefsign.gif
mercredi 30 janvier 2008 à 18:21:09 | Re : Boucle " repeat until " qui freeze mon exe

ArKaLiTy

Merci, je savais que c'était une chose toute bête à faire pour résoudre mon problème ^^ .
J'utilise un Thread, c'est niquel :) .

Lien vers le tuto de GrandVizir pour les éventuels flemmard :p :
http://www.delphifr.com/tutorial.aspx?id=231


Cette discussion est classée dans : boucle, processus, snapshot, processentry, thetarget


Répondre à ce message

Sujets en rapport avec ce message

processus inaccessible [ par van6071 ] Bonjour, J'ai fait une connerie. J'ai créer une boucle infinie avec Repeat  Until. Lorsque je m'en suis aperçu j'ai arrêté le prog avec Ctrl Alt Supp Empecher larret dun processus [ par kamail7001 ] salut c'est vraiment urgentje cherche un truc pour empecher quon arrete mon exe de tourner dans le gestionnaire des taches .et obtenir un message du g Attendre la fermeture d'un programme déjà ouvert [ par Serial326 ] Bonjour à tous,J'essai de faire un programme qui reçoit en paramètres le handle et le processus de l'application qui l'appelle ainsi que deux chemin ( Après avoir tuer son processus impossible de relancer acrobat [ par philpas ] Bonjour,J'utilise Pdf1.LoadFile(Fichier) (composant activeX Tpdf ) pour pouvoir visualiser des fichiers PDF sur une fiche. ça fonctionne. Lorsque je q Boucle pour utiliser des ressources [ par Francky23012301 ] Salut pour utiliser une ressource on peut utiliser la procedure suivante : Procedure Extraire(FileName : String); Var RS:TResourceStream; FS : TFil Boucle qui s'auto appelle [ par Francky23012301 ] Salut, Ma source est la suivante : function TForm1.Detection : boolean  ; begin   ......................................... ....................... vérification d'une chaîne [ par stevenleferran ] Bonjour,j'ai un problème avec un morceau de code en Turbo Pascal.Pourriez-vous m'aider?Le programme rentre dans une boulce while puis dans la boucle f problème dans boucle for de lecture de fichier ini [ par seba31stien ] Bonjour, je fais une boucle for pour lire les sections [1], [2]... d'un fichier ini. cependant, delphi plante au début de la lecture de la deuxième se Lire mp3 en boucle [ par Tank01 ] Bonjour,Je code en ce moment une petite interface avec des forms, et afin d'egayer tout cela, j'ai voulu y insérer la lecture d'un mp3 ( non controlab MoouseDown, MouseUp : exécution/arrêt boucle [ par orelien ] Bonjour, Je suis à la recherche d'un moyen pour exécuter une action (lancement d'une procédure en boucle par exemple) lors que je laisse le bouton d


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,484 sec (3)

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