J'ai naturellement vérifié sur le net, sans trop avoir de réponse constructive.
Si quelqu'un avait une idée.
Pour ma part, on pourrait aussi tester si le dossier de l'installation du logiciel existe, si oui exécution de l'ouverture du fichier, si non showmessage().
cincap
Messages postés460Date d'inscriptiondimanche 5 décembre 2004StatutMembreDernière intervention 6 avril 20092 24 juil. 2008 à 13:22
Bon, je teste si le dossier existe dans program files plutôt que le logiciel qui peut être de plusieurs versions, si ce dossier existe il exécute l'ouverture du fichier si non un showmessage() puis un exit.
J'utilise une partie de l'excellente fonction communiquée par un membre de ce forum.
function ValiderPath(Str : String) : String;
var i : Integer;
begin
if Copy(Str, 1, 2) = '\\' // Unité de réseau ...
then RESULT := '\' // Prefixe ...
else RESULT := '';
i := Pos('\\', Str);
while i > 0 do
begin
Delete(Str, i, 1);
i := Pos('\\', Str);
end;
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 24 juil. 2008 à 16:53
ben tu peux faire comme ceci tout simplement:
Var aStr: String;
begin
aStr := GetExePathFileFromExtention('Txt'
);
if aStr <> EmptyStr then
// le répertoire et l'application existent
else
// le répertoire et l'application n'existent pas
cincap
Messages postés460Date d'inscriptiondimanche 5 décembre 2004StatutMembreDernière intervention 6 avril 20092 24 juil. 2008 à 16:20
Comme toujours, Cirec est à la hauteur, je vais tester, mais en ce qui concerne le dossier cela fonctionnera t'il, car par expérience, des logiciel installe leur *.exe dans des dossiers dont le nom est accompagné de la version.
Ex: Dossier = "Monlogiciel V 1.02" puis l'exécutable "Monlogiciel.exe"
Dans ce cas, mon application plantera si le dossier n'existe pas.
Ces remarques, sans tester ta fonction naturellement.
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 24 juil. 2008 à 16:37
peut importe ou l'application est installé à partir du moment ou elle l'est et qu'elle soit enregistrée au près de windows comme étant l'application à utiliser avec cette extension ce code trouvera le chemin et le nom de ce programme.
Par contre avec ta méthode c'est moins sûr ... si l'utilisateur décide d'installer l'application ailleurs que dans "Program Files" ... ben ... ton code ne trouvera rien
cincap
Messages postés460Date d'inscriptiondimanche 5 décembre 2004StatutMembreDernière intervention 6 avril 20092 24 juil. 2008 à 16:47
Je viens de tester c'est plus que parfait, seul petit souci, avec la fonction avant, je pouvais utiliser un message d'alerte si le dossier n'était pas présent et si oui, lancer le fichier.
ex: Monlogiciel.txt dans le dossier Monlogiciel
f:= SD2.FileName; //OpenDialog et Fichier *.txt
if not DirectoryExists('C:\Program Files\Monlogiciel\')
then begin
ShowMessage('Attention, Monlogiciel n''existe pas sur ce PC, le viewer est désactivé !');
Bview.enabled := false;
exit
end
else
Bview.enabled := true;
ShellExecute(Handle,'Open',PChar(f),'', '',SW_SHOWMAXIMIZED);
Si c'est possible et si tu as une idée on ne sait jamais.
Sinon, ta fonction est super, j'ai essayé avec d'autres extension.