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

C++Builder Discussion :

Fermer un fichier ouvert avec ShellExecute


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 27
    Points : 20
    Points
    20
    Par défaut Fermer un fichier ouvert avec ShellExecute
    Bonjour à tous,

    J'utilise un programme qui parse un fichier pour créer un fichier de sortie *.txt que j'affiche grâce à la commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     //Launch the file
    if(32 >= (int)ShellExecute(NULL, "open", File.c_str(), "", NULL, SW_NORMAL))
    {
        /* Display an error */
       ...
    Jusque là rien d'extraordinaire, mais j'aimerai pouvoir fermer par une commande du même style le fichier après sa visualisation.

    Merci d'avance pour votre aide

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Moi j'utilise ca, et ne pas oublier de mettre #include <tlhelp32.h>

    bool TMainForm::ShellExit(char *ExeName)
    {
    //Recherche du processus:
    HANDLE hSnapShot;
    PROCESSENTRY32 uProcess;
    bool r;
    short PID = 0; //variable qui va stocker l'ID du processus de l'application
    // que l'on désire fermer.

    hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
    uProcess.dwSize = (DWORD) sizeof(PROCESSENTRY32);

    do // Cette boucle énumère tout les processus
    {
    if ( strstr(uProcess.szExeFile, ExeName) )//on cherche le nom de notre application dans le chemin d'accès de l'éxécutable du processus.
    PID = (short) uProcess.th32ProcessID;

    r = Process32Next(hSnapShot, &uProcess);
    } while ( r );

    CloseHandle(hSnapShot);

    if ( PID == 0)
    return false;

    //Fermeture du processus:
    HANDLE hTemp;

    hTemp = OpenProcess(PROCESS_ALL_ACCESS, false, (DWORD) PID);
    TerminateProcess(hTemp,0);

    return true;
    }
    //---------------------------------------------------------------------------

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 469
    Points : 24 905
    Points
    24 905
    Par défaut
    Si c'est juste un fichier texte, tu peux faire un CreateProcess sur Notepad, tu auras un meilleur contrôle !

    Surtout que ce ShellExit implique de connaître l'éditeur du fichier, ce qui n'est pas ton cas !

    Sinon encore plus simple, un TMemo, et tu y mets ton fichier texte, ça sera tout aussi pratique ! non ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 27
    Points : 20
    Points
    20
    Par défaut
    Salut,

    Holà, oui je le sens moyen le CreateProcess, la liste de paramètre n'a donné envie de fuir.. Décidément un jour faudrait que j’apprenne comment Windows marche...

    Bien vu ta solution ShaiLeTroll, j'affichais pas un Notepad pour pouvoir sauvegarder les fichiers qui m'intéresse, mais je vais plutôt créer une Form avec TMemo et sauvegarder en *.txt si je souhaite conserver le résultat

    Merci à vous

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

Discussions similaires

  1. Fermer des fichiers ouverts avec Application.Run
    Par VELO1222 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/12/2010, 21h17
  2. fermeture d'un fichier ouvert avec la fonction shell
    Par julio02200 dans le forum Access
    Réponses: 10
    Dernier message: 19/06/2006, 10h58
  3. [VB6] fermer application ouverte avec shellexecute
    Par prodi_64 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 24/04/2006, 17h36
  4. Réponses: 10
    Dernier message: 27/02/2006, 16h55
  5. Réponses: 11
    Dernier message: 21/11/2005, 16h08

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