begin process at 2008 07 05 18:27:38
1 205 268 membres
241 nouveaux aujourd'hui
14 119 membres club

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 : Boucle " repeat until " qui freeze mon exe [ Divers / Débutant(e) ] (ArKaLiTy)

Boucle " repeat until " qui freeze mon exe le 30/01/2008 15:02:01

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;

Re : Boucle " repeat until " qui freeze mon exe le 30/01/2008 15:08:18

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 :/


Re : Boucle " repeat until " qui freeze mon exe le 30/01/2008 16:00:02

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

Re : Boucle " repeat until " qui freeze mon exe le 30/01/2008 16:01:30

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

et prq met tu un sleep(50) dans ta boucle ?

Re : Boucle " repeat until " qui freeze mon exe le 30/01/2008 17:47:12

f0xi
Membre Club
(Admin CS)


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



deefsign.gif

Re : Boucle " repeat until " qui freeze mon exe le 30/01/2008 18:21:09

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


Classé sous : boucle, processus, snapshot, processentry, thetarget

Participer à cet échange

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

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

Boutique

Boutique de goodies CodeS-SourceS