Re: Comment obtenir le hwindow d'une application à partir d'un processId
>
> Le but était de fournir un menu "outil" paramétrable, avec une option
> (checkbox) pour n'autoriser qu'une seule instance de l'outil, par exemple
> pour un module de comm qui réserve ses ressources i/o, auquel cas il fallait
> juste remettre en avant-plan l'instance déjà lancée.
>
> A l'époque (et de mémoire, ça date un peu), je n'ai pas réussi à trouver une
> info qui identifie de façon bijective une applic.
>
> Il me semble que j'avais cherché à récupérer le chemin de l'exe, mais que les
> infos que j'avais réussi à récupérer changeaient selon l'origine du lancement :
> directement par l'exe ou par un raccourci (lnk) ou par .bat
>
> La difficulté vient du fait que l'outil a pu être lancé auparavant et/ou en
> dehors du contrôle de mon programme, en particulier par un bat ou un lnk.
>
> Bref, j'ai capitulé et laissé l'utilisateur se débrouiller s'il ouvre 2 fois
> la même applic.
>
> Mais ça me titille encore la glande de la programmation, de temps en temps.
> :-)
Et quelque chose comme ceci ne suffit pas ?
//----------------------------------------------------------------------
function VerifExeTourne(const FileName: string): Boolean;
//----------------------------------------------------------------------
var
ContinueLoop : Boolean;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
ProcName : string;
PathProcName : string;
begin
Result := False;
FSnapshotHandle := CreateTool32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle,FProcessEntry32);
while Integer(ContinueLoop) <> 0 do
begin
ProcName :=
UpperCase(ExtractFileName(FProcessEntry32.szExeFil e));
PathProcName := UpperCase(FProcessEntry32.szExeFile);
if (ProcName = UpperCase(FileName))
or (PathProcName = UpperCase(FileName)) then
begin
Result := True;
end;
ContinueLoop := Process32Next(FSnapshotHandle,FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
//----------------------------------------------------------------------
--
Dominique
|