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 :

chm HELP_QUIT DeleteFile OnDestroy


Sujet :

Delphi

  1. #1
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 419
    Points
    1 419
    Par défaut chm HELP_QUIT DeleteFile OnDestroy
    Bonjour, j'utilise Delphi XE avec HTMLHelpViewer
    Lorsque l'utilisateur appuie sur F1 j’extraie mon chm si il n'existe pas, tout va bien.
    Sauf que je peux pas l'effacer lors du Destroy de ma form principal.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        Application.HelpCommand(HELP_QUIT, 0);
        DeleteFile(TempDirectory + cHELP_FILENAME);
    l'aide se ferme mais reste utilisé par le programme. J'arrivge pas à trouver comment libérer le chm.

    Merci.

  2. #2
    Membre éclairé
    Avatar de Whiler
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 298
    Points : 664
    Points
    664
    Par défaut


    Pour le libérer, je ne sais pas... (es-tu sûr que c'est ton appli qui maintient un verrou ?)

    Si c'est ton appli, tu peux créer un batch (*.bat) qui effacera le CHM et le BAT que tu lances juste avant de quitter l'application...
    Par exemple, une variante de ce script...

  3. #3
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 419
    Points
    1 419
    Par défaut
    Oui c'est mon appli qui le bloque c'est sur.

    J'ai copié l'unité HTMLHelpViewer, puis j'ai pris dans windows les fonctions htmlhelp que j'ai inséré dans ma nouvelle unité HTMLHelpViewerEmbeded
    j'ai rajouté une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Procedure SafeCloseHelpAndUnload;
    Begin
      If Assigned(HelpViewer) And Assigned(HelpViewer.HelpManager) Then
        HelpViewer.InternalShutDown;
      HelpViewerIntf := Nil;
      HtmlHelpTester := Nil;
     
      If HtmlHelpModule <> 0 Then
      Begin
        FreeLibrary(HtmlHelpModule);
        HtmlHelpModule := 0;
      End;
    End;
    du coup sa ferme tout et décharge bien HHCTRL.OCX et HHA.dll mais le fichier d'aide chm reste utilisé impossible de l'effacé

  4. #4
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 419
    Points
    1 419
    Par défaut
    En attendant de trouver mieux j'utilise ta solution. Sa a le mérite de fonctionner
    J'ai rajouter un sleep d'une seconde entre les tentatives, et une sortie après le 5ème essaie
    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
    Procedure TMain.DeleteHelpFile;
    Var
      F:        Textfile;
      sBATPath: AnsiString;
    Begin
      {$WARNINGS OFF}
      sBATPath := TempDirectory + ChangeFileExt(ExtractFileName(Application.ExeName), '_help.bat');
      AssignFile(F, sBATPath);
      {$WARNINGS ON}
      Rewrite(F);
      Writeln(F, 'SET nb=0');
      Writeln(F, ':1');
      Writeln(F, 'SET /a nb=%nb% + 1');
      Writeln(F, Format('Erase "%s"', [TempDirectory + cHELP_FILENAME]));
      Writeln(F, 'PING 1.1.1.1 -n 1 -w 1000 >NUL');
      Writeln(F, 'If nombre GTR 3 Goto 2');
      Writeln(F, Format('If exist "%s" Goto 1', [TempDirectory + cHELP_FILENAME]));
      Writeln(F, ':2');
      Writeln(F, Format('Erase "%s"', [sBATPath]));
      CloseFile(F);
      WinExec(PAnsiChar(sBATPath), SW_HIDE);
    End;
    Je comprend pas pourquoi il reste verrouillé après le déchargement des modules d'aide

Discussions similaires

  1. pb pour associé un fichier chm avec un projet MFC
    Par Cédric_07 dans le forum MFC
    Réponses: 9
    Dernier message: 05/12/2006, 15h56
  2. Lire et décoder un fichier d'aide CHM
    Par bob2553 dans le forum Outils
    Réponses: 6
    Dernier message: 22/06/2005, 19h21
  3. Réponses: 3
    Dernier message: 09/06/2005, 17h19
  4. Doc PostgreSQL en fichier CHM
    Par Safaritn dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 18/05/2005, 10h14
  5. Utilisation .chm ?
    Par harry_kalagan dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/10/2004, 14h05

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