begin process at 2010 02 10 10:31:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Débutant(e)

 > 

Détection si un logiciel est présent sur le PC


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Détection si un logiciel est présent sur le PC

jeudi 24 juillet 2008 à 09:15:03 | Détection si un logiciel est présent sur le PC

cincap

Bonjour à toutes et à tous,

J'aimerai lors d'un lancement de fichier associé à son logiciel (équivalent dblclick), obtenir un message si le logiciel n'existe pas.

Ex : l'ancement d'un fichier *.txt avec le logiciel principal Bloc-notes.

Voici mon code :

procedure TFormLancement.BVIEWClick(Sender: TObject);
var
f:string;
begin

  f:= SD2.FileName; //OpenDialog et Fichier *.txt

  ShellExecute (Handle,'Open',PChar(f),'', '',SW_SHOWMAXIMIZED) ;
 
 end;

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().

Merci d'avance,

@+,

Cincap


mailto:

jeudi 24 juillet 2008 à 11:17:01 | Re : Détection si un logiciel est présent sur le PC

cincap

Je sais que j'aurai pu faire ceci :

Var
 const Message : array[boolean] of string = ('Non','Oui');
begin
  ShowMessage(FileExists('C:\Documents and Settings\Cincap\Menu

Démarrer\Programmes\Accessoires\Bloc-notes.exe'));
end;

Mais je pense qu'il y a une autre solution au cas ou ce fichier n'est pas installé dans ce chemin.

@+,

Cincap

mailto:

jeudi 24 juillet 2008 à 13:22:07 | Re : Détection si un logiciel est présent sur le PC

cincap

Réponse acceptée !

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;

  RESULT := RESULT + Str;
end;

Merci à tous,

@+,

Cincap

mailto:

jeudi 24 juillet 2008 à 15:00:42 | Re : Détection si un logiciel est présent sur le PC

cirec

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Salut,

aïe aïe aïe

regarde ce Snippet  j'ai fait le code exprès pour toi " la traduction hein"

 
@+
Cirec

jeudi 24 juillet 2008 à 16:20:12 | Re : Détection si un logiciel est présent sur le PC

cincap

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.

Je te tiens au courant.

@+,

Cincap

mailto:
jeudi 24 juillet 2008 à 16:37:36 | Re : Détection si un logiciel est présent sur le PC

cirec

Membre Club Administrateur CodeS-SourceS
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

 
@+
Cirec

jeudi 24 juillet 2008 à 16:47:28 | Re : Détection si un logiciel est présent sur le PC

cincap

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.

@+,

Cincap
mailto:
jeudi 24 juillet 2008 à 16:53:14 | Re : Détection si un logiciel est présent sur le PC

cirec

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
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
end;

 
@+
Cirec

jeudi 24 juillet 2008 à 17:22:45 | Re : Détection si un logiciel est présent sur le PC

cincap

@ Cirec, mais bien entendu, penser difficile on s'égare, je prends de l'âge c'est certain.

Merci encore une fois, tes lumières m'ont à nouveau aidé dans les deux sens.

Bonne journée,

@+,

Cincap

mailto:


Cette discussion est classée dans : fichier, pc, présent, logiciel, détection


Répondre à ce message

Sujets en rapport avec ce message

Connaitre taille d'1 fichier avant téléchargement [ par costello ] Bonsoir, je développe actuellement un logiciel qui est amené à récupérer des fichiers stockés sur internet. J'utilise pour cela des composants Indy (I Comment ajouter une image BMP dans un fichier RTF [ par patkiller ] BonjourJe suis un débutant en Delphi. J'ai fait un logiciel destiné à tenir un journal intime.Le logiciel sauvegare le contenu du journal dans un fich petit probléme avec delphi [ par calou87 ] calouBonjour,j'ai créé un petit programme avec delphi , mais celui ci fonctione que sur mon pc. Sur un autre pc voici le message que j'ai: exception e suppressionde repertoire et fichier [ par drakaon ] salutje cherche à réaliser une fenêtre qui sur un click bouton supprime le repertoire selectionner par un TDirectoryListBox et les fichiers présent da Projet de programme [ par fox37 ] Bonsoir a tous, Depuis un petit momment je voudrais realiser une application autour d'un anémomètre. Je précise que je ne connais encore rien au lang Simulateur de souris depuis un gamepad [ par MatLab123 ] Bonjour, je cherche à tt prix un logiciel permettant de simuler les mouvements et les boutons de le souris depuis mon gamepad. J'ai telechargé un logi logiciel sous fenetre MS DOS [ par scorlink ] bonjour tt le monde,j'ai un problème, j'ai un logiciel dans lequel je doit ecrire des comandes, ça veux dire il est sans interface grafique. donc je v commande SendStr du composant ICS TWSocket [ par mimimou ] Bonjour a tous, J essaye depuis quelques jours a tranferer un fichier .ini entre les composants ICS WSocket1 et WSocketThrdServer1 sur Delphi 2007, m Compter les valeurs... [ par fermat ] Bonjour, J'ai un fichier txt.composé de : 10 lignes , comportant 20 valeurs (par ligne), séparées par un point virgule. J'ai chargé ce fichier dan Savedialog [ par totob0 ] bonjour est ce que quelqu'un peut m'aider à exporter  ma ta table mysql qui est en extension (.frm) en (.xls), car j'ai des caractères spéciaux lorsqu


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,967 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales