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

Delphi Discussion :

probléme shellexecute (lancer des dossier par clic sur les items d'un listview)


Sujet :

Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 125
    Points : 45
    Points
    45
    Par défaut probléme shellexecute (lancer des dossier par clic sur les items d'un listview)
    Bonjour,

    Je souhaite gérer une liste de racourcis. Pour celà j'utilise un ListView dans lequel j'ajoute mes fichiers par drag and drop depuis windows.Cette partie là fonctionne, voici le code (au cas où):
    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
     
     var
      FileNbr, i: Integer;
      FileName: String;
      Files: Array[0..255] of Char;
      ListItem: TListItem;
     
    procedure TFichier.FormCreate(Sender: TObject);
    begin
      DragAcceptFiles(Self.Handle,True);
    end;
     
    procedure TFichier.DropMsg(var msg: TWMDropFiles);  // faire le drag and drop
    begin
      FileNbr:= DragQueryFile(Msg.Drop, $FFFFFFFF, Files, SizeOf(FileName));
      for i:=0 to FileNbr-1 do
      begin
        FileName:=copy(Files, 0, DragQueryFile(Msg.Drop, i, Files, 255));
        ListItem:=ListView1.Items.Add;
        ListItem.Caption:=ExtractFileName(FileName); //Column 0 - Nom
        ListItem.SubItems.Add(FileName); //Column 1 - Origine
      end;
      Msg.Result:=0;
      DragFinish(msg.Drop);
    end;
    Ce qui ne marche pas c'est lorsque je souhaite ouvrir l'un des racourci en cliquant dessus. J'utilise shellexecute comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TFichier.ListView1SelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    begin
      ShellExecute(0,'open',PChar(filename) , Nil, Nil, SW_SHOW);
    end;
    Avec cette ligne je n'obtient que des erreurs, je pense que c'est a cause de "FileName".

    Donc est-ce que quelqu'un saurait comment lancer les raccourcis (qui sont des dossiers, des fichiers textes...comme "mes documents" par exemple) en cliquant dessus?

    J'espére avoir été clair dans ma demande (il est 00:40 et mes facultées mentales se dégradent passé minuit ).

    Merci.

  2. #2
    Membre averti Avatar de zemeilleurofgreg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 515
    Points : 346
    Points
    346
    Par défaut
    Salut Fred,

    que te retourne ta variable "FileName" ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 125
    Points : 45
    Points
    45
    Par défaut
    comment ca?

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    comment ca?
    Par exemple avec showMessage(fileName) qui permet de voir ce que retourne la variable "FileName".

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 125
    Points : 45
    Points
    45
    Par défaut
    daccord je voi ce que tu ve dire par là. Filename "retourne" le chemin d'acces du fichier ou dossier. (Ce qui est logique puisque sinon la ligne contenant shellexecute ne fonctionnerai pas ).

  6. #6
    Membre averti Avatar de zemeilleurofgreg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 515
    Points : 346
    Points
    346
    Par défaut
    sa propre logique est souvent bien différente de celle du compilateur

    donc une chaine de caractères du style 'F:\dossier\' ?

    Test le ShellExecute avec un chemin d'accès directement dans ton code !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute(0,'open','F:\dossier\' , Nil, Nil, SW_SHOW);

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 125
    Points : 45
    Points
    45
    Par défaut
    c'est bon....laissez tomber vos pelles, vos pioches et ne vous creusez plus la cervelle

    J'ai trouver la solution a mon probléme. Pour les personnnes que ça peut aider voici le code qui fonctionne:

    procedure TFichier.ListView1SelectItem(Sender: TObject; Item: TListItem;
    Selected: Boolean);
    begin
    if Selected then
    ShellExecute(0, 'open', PChar(Item.SubItems.Strings[0]) , nil, nil, SW_SHOW);
    end;

    merci tout de même et à bientôt

  8. #8
    Membre averti Avatar de zemeilleurofgreg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 515
    Points : 346
    Points
    346
    Par défaut
    c'est donc que ton filename te retournais quelque chose d'incorrect !!!!!

  9. #9
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Merci d'ajouter le tag ou


    à+

Discussions similaires

  1. Créer des champs par clic sur un bouton
    Par Grassii dans le forum JSF
    Réponses: 2
    Dernier message: 21/04/2015, 12h47
  2. [XL-2010] Lancer une macro par clic sur une shape
    Par modus57 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/03/2015, 12h14
  3. Réponses: 3
    Dernier message: 30/01/2012, 13h42
  4. problème de calcul des normales par sommet
    Par captainSeb dans le forum OpenGL
    Réponses: 2
    Dernier message: 21/01/2005, 13h42

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