cs_Gysmo
Messages postés209Date d'inscriptionlundi 11 février 2002StatutMembreDernière intervention13 décembre 2002
-
13 avril 2002 à 03:47
cs_Gysmo
Messages postés209Date d'inscriptionlundi 11 février 2002StatutMembreDernière intervention13 décembre 2002
-
7 mai 2002 à 12:26
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.
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 6 mai 2002 à 18:36
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.
cs_Gysmo
Messages postés209Date d'inscriptionlundi 11 février 2002StatutMembreDernière intervention13 décembre 2002 6 mai 2002 à 20:12
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;
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 6 mai 2002 à 21:48
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) .
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 7 mai 2002 à 00:29
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 ?
cs_Gysmo
Messages postés209Date d'inscriptionlundi 11 février 2002StatutMembreDernière intervention13 décembre 2002 7 mai 2002 à 01:01
Ben j'ai pas l'aide sur FindExec (ca doit etre dans la SDK pe etre) mais tout ce ke je sais c ke ca marche nickel.
Fais un essai avec un TOpenDialog, ouvre n'importe quoi et affiche dans un TLabel FindExec(OpenDialog.FileName) et tu verra le nom complet (avec path) du prog a ki le fichier ouvert est associé.
Et l'apli associé na pas a etre chargé.
Tandis ke ce ke je comprend dans l'aide sur ParamStr(0) l'apli doit etre executer.
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 7 mai 2002 à 08:30
Affirmatif, tu as raison.
En réalité, je l'avais testé en saisissant le nom d'une unité pascal dans un TEdit et il me envoyait"c:\Program" comme réponse alors que les extensions .pas sont bien enregistrées dans la système ! Essayes et tu verras.
Un fichier .dpr n'est pas plus reconnu.
Néanmoins, ta fonction m'intéresse beaucoup.
Cependant, la méthode de recherche des extensions de fichiers que je t'ai envoyée fonctionne également et elle te donne le point de départ de la méthode à utiliser.