Ben, j'ai peut-être pas bien compris l'usage. L'aide de delphi dit que FindExecutable retourne un THandle et le chemin de l'éxécutable dans le 3e paramètre.
Or, si l'on fournit un nom de fichier comme paramètre, la fonction me retourne...le nom de l'application et le répertoire courant ! Ce qui équivaut à utiliser ParamStr(0) sans déclarer un array of char ni transtyper des string en PChar. De plus, l'application recherchée doit être chargée, sinon comment Windows retrouverait-il le Handle ?
Qu'en penses-tu ?
May Delphi be with you.
-------------------------------
Réponse au message :
-------------------------------
Umh, j'aimerais avoir plus de precision.
En quoi cela n'est-il pas cocluant?
De plus d'ou vient la complication?
Bye.
-------------------------------
Réponse au message :
-------------------------------
Ben, le résultat n'est pas franchement concluant.
Mais le but poursuivi est différent à l'origine : je recherchais l'application associée à une extension donnée.
Je dirais même qu'il s'agit (ta solution) de quelque chose de bien compliqué alors que l'on obtient le même résultat avec ParamStr(0) .
May Delphi be with you.
-------------------------------
Réponse au message :
-------------------------------
Je l'avais trouver, grace a DC, merci.
Quand a ton code il y a un peu plus simple :
function FindExec(sFile: String): String;
var Exec: array [0..255] of Char;
begin
FindExecutable(PChar(ExtractFileName(sFile)), PChar(ExtractFilePath(sFile)), Exec);
Result:=String(Exec);
end;
Qu'est t'en pense l'ami?
Babaille?
-------------------------------
Réponse au message :
-------------------------------
Mieux encore, comment récupérer l'application assoicée à une extension :
function SearchApp(Extension: string;
out AppFound: string): boolean;
var
Reg : TRegistry;
FFileClass : string;
begin
//Initialisation des valeurs de retour
Result := False;
AppFound:='';
//Lecture de la base de registres
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CLASSES_ROOT;
//L'extension est-elle recensée dans le système ?
if Reg.OpenKeyReadOnly(Extension) then
begin
FFileClass := Reg.ReadString( '' );
Reg.CloseKey;
end;
//Si recensée, trouver l'appli associée
//à l'extension
if FFileClass <> '' then
begin
if Reg.OpenKeyReadOnly( FFileClass + '\Shell\Open\Command' ) then
begin
AppFound := Reg.ReadString( '' );
Reg.CloseKey;
Result := True;
end;
end;
Reg.Free;
end;
La réponse à ta question est contenue dans le code ci-dessus si tu la combines avec un objet TRegistry :
Renvoie une liste de chaînes contenant les noms de toutes les sous-clés de la clé en cours.
procedure GetKeyNames(Strings: TStrings);
May Delphi be with you.
-------------------------------
Réponse au message :
-------------------------------
Dans l'explorer,menu Outills|Option des dossiers|Types de fichiers, une liste des extensions apparait.
Ben voila j'aimerais savoir si c possible de recuperer cette liste dans une TStringList par exemple.
Si c possible merci d'avance pour les renseignements.
Babaille!
