Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
prog:lazarus:cas:processus:processus [24/04/2021 14:19]
thierry [Énumérer les processus]
prog:lazarus:cas:processus:processus [24/04/2021 15:41] (Version actuelle)
thierry [Trouver le nom complet d'un Processus avec QueryFullProcessImageName]
Ligne 17: Ligne 17:
  
 <note tip>​N'​aurait t'il pas été plus facile d'​utiliser ''​JwaPsApi:​GetProcessImageFileName''​ ou ''​QueryFullProcessImageNameA''​ en passant le Handle du TProcess pour retrouver ce nom de fichier ???</​note>​ <note tip>​N'​aurait t'il pas été plus facile d'​utiliser ''​JwaPsApi:​GetProcessImageFileName''​ ou ''​QueryFullProcessImageNameA''​ en passant le Handle du TProcess pour retrouver ce nom de fichier ???</​note>​
 +==== Trouver le nom complet d'un Processus avec QueryFullProcessImageName ====
 +Ci dessous :
 +  * ''​GetFullProcessImageName''​ retourne le nom de fichier complet en fonction du Handle du procesus
 +  * ''​GetFullProcessImageNameByProcID''​ retourne le nom de fichier complet en fonction de l'ID du procesus.\\ (Récupere le Handle avec un ''​OpenProcess''​ puis appel ''​GetFullProcessImageName''​)
 +<code delphi>
 +uses Windows;
 +...
 +function GetFullProcessImageName(const AProcessHandle:​ THandle): string;
 +var
 +   ​vS: ​  ​UnicodeString;​
 +   vLen: DWORD;
 +begin
 +   vLen := MAX_PATH;
 +   ​vS ​  := '';​
 +   ​SetLength(vS,​ vLen);
 +   ​Result := '';​ //par defaut
 +   if QueryFullProcessImageNameW(AProcessHandle,​ 0, @vS[1], @vLen) then
 +     begin
 +      SetLength(vS,​ vLen);
 +      Result := UTF8Encode(vS);​
 +     end;
 +end;
 +
 +function GetFullProcessImageNameByProcID(const AProcId: DWord): string;
 +var
 +   ​vHandle:​ THandle;
 +begin
 +   ​Result ​ := '';​
 +   ​vHandle := OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION,​ False, AProcId);
 +   if vHandle > 0 then
 +     begin
 +        try
 +         ​Result := GetFullProcessImageName(vHandle);​
 +        finally
 +         ​CloseHandle(vHandle);​
 +        end;
 +     end;
 +end;
 +
 +
 +</​code>​
 +
  
 ==== Énumérer les processus ==== ==== Énumérer les processus ====
   * Voir : [[https://​wiki.freepascal.org/​AppIsRunning]]   * Voir : [[https://​wiki.freepascal.org/​AppIsRunning]]
 +  * [[https://​wiki.lazarus.freepascal.org/​Windows_Programming_Tips#​Showing.2Ffinding_processes]]
  
 <code delphi> <code delphi>