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 :

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;
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.
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