Bonjour à tous,
J'utilise cette fonction pour vérifier si un "exe" est en cours, celle ci fonctionnait très bien sur des machines en XP et Win7 32 bits mais plus depuis que je suis en 64 bits.
J'ai chercher un peu partout mais je n'ai pas trouvé d'informations relevant de mon cas.
J'utilise (toujours) Delphi 5.
Dans mon Unit j'ai :
Je rentre dans un edit1 le nom d'un programme recherché, exemple : MOM.exe et si le process est présent je passe en vert -> parfait cela fonctionne.
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 Uses Tlhelp32 //(entre autres) Implementation function UpString(Str: string): string; var i: integer; begin result:=''; for i:=1 to length(str) do result:=result+UpCase(str[i]); end; function ProgEnCours(NomProg:string):boolean; var LPPE : TProcessEntry32; H : Thandle; begin result := false; H := CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0); Lppe.DwSize:=Sizeof(TProcessEntry32); if Process32First(h,lppe) then Begin; if UpString(ExtractFileName(LPPE.szexefile))=UpString(NomProg) then result:=true; while Process32next(h,lppe) do begin if UpString(ExtractFileName(LPPE.szexefile))=Upstring(NomProg) then result:=true; end; End; Closehandle(h); end; procedure TForm1.test(Sender: TObject); begin if ProgEnCours(edit1.text) then begin shape1.Brush.Color:=clgreen; end else begin shape1.Brush.Color:=clred; end; end;
Si je rentre "K8602.exe" qui est réellement le nom du programme que je cherche -> Rouge !!!!
La seule chose que je remarque c'est que le nom de l'image dans le "taskmgr" pour K8062e.exe est "K8602e.exe *32", je suppose que c'est parce que c'est un 32bits" !!!
Est ce que ce serait lié?
Est ce que vous auriez une astuce ou solution pour régler ce souci?
Merci d'avance
Guy
Partager