IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Free Pascal Discussion :

[FreePascal] Lancer explorer depuis FreePascal


Sujet :

Free Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juin 2005
    Messages : 102
    Par défaut [FreePascal] Lancer explorer depuis FreePascal
    Bonjour,

    Je cherche un moyen de lancer l'explorateur de fichier par défaut de l'OS installé (par exemple Explorateur Windows pour Windows, etc...), positionné sur un répertoire précis (par exemple le répertoire en cours d'utilisation de mon programme)

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    8 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 8 051
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    Je ne peux tenter de répondre que pour la plateforme Windows :
    • Le chemin par défaut de l'explorateur est donné par la variable d'environnement %SystemRoot%, dont la valeur peut être déterminée par la fonction GetEnvironmentVariable;
    • Le dossier en cours peut être déterminé par la fonction GetCurrentDirectory;
    • L'explorateur peut être exécuté par la fonction ExecProcess.

    Voici un exemple de code qui fonctionne chez moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Program EXECEXPLORER;
     
    Uses Strings, Windows;
     
    Var CheminExplorer : Array [0..MAX_PATH] of Char;
        Buffer : Array [0..MAX_PATH] of Char;    
        CheminLocal : Array [0..MAX_PATH] of Char;
        StartupInfo : tStartupInfo;
        ProcessInformation : tProcessInformation;
     
    Begin
      (* Détermination du dossier de l'explorateur *)
      Write('D'#233'termination de la variable d''environnement %SystemRoot% : ');
      if GetEnvironmentVariable('SystemRoot',CheminExplorer,SizeOf(CheminExplorer)) > 0
         then
           begin
             WriteLn(CheminExplorer);
             Write('Ex'#233'cution de Explorer.exe : ');
             (* Détermination du dossier courant *)
             StrCat(CheminExplorer,'\Explorer.exe');
             GetCurrentDirectory(SizeOf(Buffer),Buffer);
             StrCopy(CheminLocal,'"');         
             StrCat(CheminLocal,Buffer);
             StrCat(CheminLocal,'"');         
             (* Structure réglant les propriétés du processus exécuté *)
             FillChar(StartupInfo,SizeOf(StartupInfo),0);
             StartupInfo.cb := SizeOf(StartupInfo);
             (* Structure recevant des infos du nouveau processus *)
             FillChar(ProcessInformation,SizeOf(ProcessInformation),0);
             (* Exécution de l'explorateur *)
             if CreateProcess(CheminExplorer,CheminLocal,
                              Nil,Nil,False,NORMAL_PRIORITY_CLASS,Nil,Nil,
                              StartupInfo,ProcessInformation)
                then
                  WriteLn('OK')
                else
                  WriteLn('Erreur');
           end  
         else
           WriteLn('Erreur');
      ReadLn;            
    End.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juin 2005
    Messages : 102
    Par défaut
    Merci pour la solution Windows. Ca marche aussi sous Windows Vista ?

  4. #4
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    8 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 8 051
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par franck.thibault
    Ca marche aussi sous Windows Vista ?
    Ca marche avec toutes les versions antérieures donc il n'y a pas de raison que cela ne marche pas avec Vista.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

Discussions similaires

  1. Lancer mysqldump depuis delphi
    Par nopnop dans le forum Bases de données
    Réponses: 4
    Dernier message: 08/08/2006, 15h03
  2. pb de lancer telnet depuis du code c
    Par peppena dans le forum Réseau
    Réponses: 17
    Dernier message: 26/06/2006, 12h59
  3. Lancer Word depuis un intranet
    Par jayce_84 dans le forum ASP
    Réponses: 7
    Dernier message: 03/03/2006, 22h11
  4. [FreePascal] Lancer un exe
    Par Ultraboss dans le forum Free Pascal
    Réponses: 4
    Dernier message: 02/11/2005, 19h03
  5. [Débutant] Lancer procédure depuis une autre classe
    Par pugnator dans le forum Langage
    Réponses: 5
    Dernier message: 31/10/2005, 14h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo