Bonjour,
Je voudrai savoir comment m'y prendre pour connaitre les processus en cours sur la session (win), pour ensuite checker si tel ou tel processus est lancé, et au final griser tel ou tel bouton.
Merci,
Jeff
Bonjour,
Je voudrai savoir comment m'y prendre pour connaitre les processus en cours sur la session (win), pour ensuite checker si tel ou tel processus est lancé, et au final griser tel ou tel bouton.
Merci,
Jeff
Bonjour,
Si vous parlez de processus externes à l'application, à partir du code Lazarus, vous pourriez lancer la commande windows tasklist et récupérer le CR dans un memo...
Cordialement. Gilles
Merci, pas bête comme idée, mais comment l'utiliser dans le code lazarus ?
Après je voudrai prendre que les nom pour voir sur Blabla.exe tourne par exemple
Je vous transmets un bout de code en fin de PM. Je suis en train de me battre avec mes dépendances sous Linux... et pour l'instant je n'ai pas le dessus...
Cordialement. Gilles
Merci bien Gilles.
Bonne bataille ^^
Voici le code. Il est issu d'un wiki Lazarus.
Cordialement. Gilles
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 procedure TForm1.FormCreate(Sender: TObject); //Dans uses ajouter : process const READ_BYTES = 2048; var S: TStringList; M: TMemoryStream; P: TProcess; n: LongInt; BytesRead: LongInt; i: integer; sLine: string; begin M := TMemoryStream.Create; BytesRead := 0; P := TProcess.Create(nil); // CommandLine différente selon l'OS {$IFDEF WINDOWS} P.CommandLine := 'tasklist'; {$ELSE} //Pour Linux et MAC OS X // P.CommandLine := '???'; {$ENDIF} P.ShowWindow:= swoHIDE; P.Options := [poUsePipes]; P.Execute; while P.Running do begin M.SetSize(BytesRead + READ_BYTES); n := P.Output.Read((M.Memory + BytesRead)^, READ_BYTES); if n > 0 then begin Inc(BytesRead, n); end else Sleep(100); end; repeat M.SetSize(BytesRead + READ_BYTES); n := P.Output.Read((M.Memory + BytesRead)^, READ_BYTES); if n > 0 then begin Inc(BytesRead, n); end; until n <= 0; M.SetSize(BytesRead); S := TStringList.Create; S.LoadFromStream(M); //Eventuellement ajouter un Memo sur la Form pour voir le résultat //Memo1.Clear; //Memo1.Lines.AddStrings(S); if S.count>0 then begin for i:=0 to S.count -1 do begin sLine:=trim(S[i]); //Traiter chaque sLine ici pour récupérer le nom.exe contenu //Voir petite RegEx ci-dessous end; end; S.Free; P.Free; M.Free; end;
Dernière modification par Invité ; 11/06/2010 à 11h50. Motif: Actualisation
Bonjour,
Petite RegEx en Lazarus pour chercher les xxx.exe dans chaque ligne de la StringList :
Bonne journée. Gilles
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 function fsRegExExe(sRegex:string):string; //Uses RegExpr; //Objet : Renvoyer sous-chaine 'xxxxx.exe ' contenue dans sRegEx //Rq : Non généralisable : TRegExpr ne gère pas les {} entre autres... var r: TRegExprEngine; index,len,i: integer; begin result:= ''; r := GenerateRegExprEngine('[\w\d\-\.]+\.exe ',[ref_singleline]); //Espace indispensable derrière .exe sinon chaine a.exej serait renvoyée if not (RegExprPos(r,pchar(' '+sRegEx+' '), index, len)) then begin //Petit bug : Si la chaine commence directement par un.exe, il est //non détecté --> On place un espace devant la chaine... //Par contre espace normal après la chaine : on recherche '.exe ' //donc si sRegEx se termine par 'xxxx.exe', il ne serait pas détecté DestroyregExprEngine(r); exit; end; DestroyregExprEngine(r); if (index < 1) or (len < 5) then exit; for i:=index to index+len-2 do //-2 car -1 plus le blanc derrière .exe result:=result+sRegex[i]; result:=trim(result); //Normalement inutile end;
Dernière modification par Invité ; 11/06/2010 à 11h51.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager