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

Langage Delphi Discussion :

Ouvrir un fichier avec une appli déjà lancée [FAQ]


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 17
    Points : 16
    Points
    16
    Par défaut Ouvrir un fichier avec une appli déjà lancée
    Bonsoir à tous

    Mon problème est résumé dans le titre... Mais je donne quand même un exemple :

    Avec la methode "createprocess", je lance notepad.exe avec le fichier C:\montexte.txt en paramètre. Il s'ouvre avec... Mais comment faire pour demander à ce même notepad d'ouvrir un autre fichier ?

    Merci

  2. #2
    Membre averti
    Avatar de jmjmjm
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2005
    Messages : 760
    Points : 439
    Points
    439
    Par défaut
    Pourquoi ne le ferme tu pas puis le réouvre avec un autre fichier ??
    Sinon je ne pense pas que l'on puisse envoyer une commande au notepad permettant de faire cela !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    J'avais déjà pensé à cette solution - et c'est sans doute celle que je vais retenir - mais je la trouve pas très "propre".

    Peut-être est-il possible, avec le handle du process et le chemin du fichier à ouvrir, de "simuler un drag-and-drop"... ou quelque chose dans ce style... :

  4. #4
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Il y a une autre solution
    tu peux interagir avec le notepad (ou autre application) en envoyant des messages.
    Comme le notepad en particulier, gère le glisser/déposer fichier,

    Tu peux envoyer une message au notepad le fichier, cela fonctionne parfaitement, et évite effectivement d'ouvrir/ferme le notepad causant lenteur et flickering.

    je te donnes un extrait de mon code brut de pomme, il faut que tu l'adaptes (que j'ai trouvé et adpaté d'ailleurs!)

    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
    var
       i : Integer;
       wparam : THandle;
       pDrop: PDropFiles;
       pFiles: PChar;
    begin
         ...
         wParam :=  GlobalAlloc( GMEM_ZEROINIT or GMEM_MOVEABLE or GMEM_DDESHARE, Length( SFichier ) + 20);
         pDrop := GlobalLock( wparam );
         try
         pDrop^.pFiles := 20;
         pDrop^.fWide := False;
         pFiles := Pointer(pDrop);
         Inc( pFiles, pDrop^.pFiles);
         for i := 1 to Length( SFichier ) do
           begin
           pFiles^ := SFichier[ i ];
           Inc( pFiles );
           end;
         pDrop.fNC := False;
         pDrop.pt := Point( 10, 10 );
         finally GlobalUnLock( wParam ); end;
         // Glisser virtuel
         PostMessage( HandleViewver, WM_DROPFILES, wparam, 0 );
         ...
    end
    HandleViewver est le Handle de l'appli Notepad lancé
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par TicTacToe
    Il y a une autre solution
    tu peux interagir avec le notepad (ou autre application) en envoyant des messages.
    Comme le notepad en particulier, gère le glisser/déposer fichier,

    Tu peux envoyer une message au notepad le fichier, cela fonctionne parfaitement, et évite effectivement d'ouvrir/ferme le notepad causant lenteur et flickering.

    je te donnes un extrait de mon code brut de pomme, il faut que tu l'adaptes (que j'ai trouvé et adpaté d'ailleurs!)

    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
    var
       i : Integer;
       wparam : THandle;
       pDrop: PDropFiles;
       pFiles: PChar;
    begin
         ...
         wParam :=  GlobalAlloc( GMEM_ZEROINIT or GMEM_MOVEABLE or GMEM_DDESHARE, Length( SFichier ) + 20);
         pDrop := GlobalLock( wparam );
         try
         pDrop^.pFiles := 20;
         pDrop^.fWide := False;
         pFiles := Pointer(pDrop);
         Inc( pFiles, pDrop^.pFiles);
         for i := 1 to Length( SFichier ) do
           begin
           pFiles^ := SFichier[ i ];
           Inc( pFiles );
           end;
         pDrop.fNC := False;
         pDrop.pt := Point( 10, 10 );
         finally GlobalUnLock( wParam ); end;
         // Glisser virtuel
         PostMessage( HandleViewver, WM_DROPFILES, wparam, 0 );
         ...
    end
    HandleViewver est le Handle de l'appli Notepad lancé
    C'est pile poil ce que je cherchais !

    Je regarderai cela plus en détail ce week-end...

    Merci bcp pour le coup de pouce.

  6. #6
    Membre averti
    Avatar de jmjmjm
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2005
    Messages : 760
    Points : 439
    Points
    439
    Par défaut
    Ok TicTacToe je prend note aussi MERCI

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Communication avec une appli déjà lancée
    Par henrygoland dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 24/04/2009, 21h27
  2. ouvrir un fichier avec une boite de dialogue
    Par gdulu dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/03/2009, 16h46
  3. ouvrir un fichier avec une application avec system() ?
    Par supergrey dans le forum Linux
    Réponses: 7
    Dernier message: 03/05/2008, 09h04
  4. ouvrir un fichier avec une application quelconque
    Par madlozoz dans le forum Windows
    Réponses: 4
    Dernier message: 03/02/2008, 12h41
  5. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 15h17

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