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

Web & réseau Delphi Discussion :

WebBrowser Impression Message d'erreur


Sujet :

Web & réseau Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 282
    Points : 102
    Points
    102
    Par défaut WebBrowser Impression Message d'erreur
    lors du lancement du impression j'ai un message d'erreur :"Tentative de revocation d'une cible qui n'a pas été ouverte"


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    WebBrowserCptRT.Navigate(Compilation_FichierDestHtm); 
    WebBrowserCptRT.ControlInterface.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut);

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 282
    Points : 102
    Points
    102
    Par défaut
    s'il vous plait aidez moi si vous avez des idées ??

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 282
    Points : 102
    Points
    102
    Par défaut
    pr info : c'est une erreur OLE d'apres le message

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 282
    Points : 102
    Points
    102
    Par défaut
    la je compren plus rien je m'explique

    j'ai crée un bouton qui me permet d'imprimer la page web que je charge precedement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    procedure TTest.bImpressionCRTClick(Sender: TObject);
    var vaIn, vaOut: OleVariant;
    begin
     try
       WebBrowserCRT.ControlInterface.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut);
     except
       ShowMessage('erreur');
     end;
     pCptWebBrowser.Visible := False;
    end;
    voila rien de tres exceptionnel jusqu'a present donc c'est la que c'est drole

    je fai ce code la puis j'appuie sur le bouton Imprimer de la page web
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WebBrowserCRT.Navigate(Compilation_FichierDestHtm);
        pCptWebBrowser.Visible := True;
    ceci marche nickel impression bien passer rien a dire

    et la chute la blague la voila

    j'ajoute la ligne suivant au code ci dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    WebBrowserCRT.Navigate(Compilation_FichierDestHtm);
        pCptWebBrowser.Visible := True;
        bImpressionCRTClick(Self);// appel du bouton d'impression
    et la j'ai l'erreur que je vous es deja dit pourquoi?

    ce que je veu faire est simple lancez l'impression de ma page sans avoir a faire apel a l'utilisateur pour appuyer sur le bouton



    je suis prenneur de toute idée bidouille ou autre

    merci

  5. #5
    Membre chevronné
    Avatar de Pierre Castelain
    Inscrit en
    Avril 2002
    Messages
    523
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 523
    Points : 1 943
    Points
    1 943
    Par défaut
    Il faut que tu attende que navigateur ait fini de charger la page. Quelque chose dans ce goût là devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      WebBrowser1.Navigate('http://www.google.fr');
      while WebBrowser1.Busy do
        Application.ProcessMessages;
      // Ton code d'impression

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 282
    Points : 102
    Points
    102
    Par défaut
    juste une question car j'y avais penC mais j'avai utiliser cette methode peut etre pas exactement comme toi et sa n'avait pa marcher du coup apres j'ai testé un sleep de 5s sur une page qui en theorie est largement charger et idem ca marchai pas donc as tu fait des essayer pour savoir si ca vien de chez moi ou d'autre chose mais je vai quand meme refaire ce test

    merci pour le coup de main

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 282
    Points : 102
    Points
    102
    Par défaut
    je vien de tester avec ce code idem meme erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedure TTest.bImpressionCRTClick(Sender: TObject);
    var vaIn, vaOut: OleVariant;
    begin
     try
       while WebBrowserCRT.Busy do
        Application.ProcessMessages;
       WebBrowserCRT.ControlInterface.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut);
     except
       ShowMessage('erreur');
     end;
     pCptWebBrowser.Visible := False;
    end;
    serieux la j'ai plus d'idée et sa me soul car je capte pas pourquoi ca marche je compte sur vous pour me sortir de cette galere

    merci encore

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 282
    Points : 102
    Points
    102
    Par défaut
    personne n'a d'idée.???

  9. #9
    Membre chevronné
    Avatar de Pierre Castelain
    Inscrit en
    Avril 2002
    Messages
    523
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 523
    Points : 1 943
    Points
    1 943
    Par défaut
    Je ne sais pas pourquoi tu as ce problème. Voici ce que je viens de tester avec succès :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      vaIn, vaOut: OleVariant;
    begin
      WebBrowser1.Navigate('http://delphi.developpez.com');
     
      while WebBrowser1.Busy do
        Application.ProcessMessages
     
      WebBrowser1.ControlInterface.ExecWB(OLECMDID_PRINT,
        OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut);
    end;
    Peut-être un problème avec ta version d'Internet Explorer ou avec le document que tu ouvre ?

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 282
    Points : 102
    Points
    102
    Par défaut
    je suis ok avec toi en passant par un bouton imprimer cela fonctionne chez moi aussi si on va sur le bouton on clic dessus pas de probleme ca marche nickel

    mais si je fai l'appel de la fonction lié au bouton sa marche pas ????

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 282
    Points : 102
    Points
    102
    Par défaut
    Bon je vais faire un recapitulatif de ma situation

    voila la fonction que j'utilise pour imprimer ma page web :

    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
     
    Procedure TTest.ImprimerCRT();
    var  vaIn, vaOut: OleVariant;
    begin
      if Application.MessageBox(PChar(Traduction_Traduire(9378)),PChar(Traduction_Traduire(2010)), MB_YESNO) = IDYES then
      begin
        WebBrowserCRT2.Navigate(Compilation_FichierDestHtm);
        try
          while WebBrowserCRT2.Busy do
            Application.ProcessMessages;
            WebBrowserCRT2.ControlInterface.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut);
          except
            ShowMessage('erreur');
          end;
      end;
    end;
    voici la fonction qui appel ma fonction d'impression :
    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
     
    procedure TTest.TraitementCRT();
    begin
      mCptRenduHtm.Clear();
      mCptRenduHtm.Lines.LoadFromFile(Compilation_FichierSourceHtm );
     
      mCptRenduHtm.Lines.Text := ExchangeVarCpt('&DIAL',mCptRenduHtm.Lines.Text);
      mCptRenduHtm.Lines.Text := ExchangeVarCpt('&DIAL',mCptRenduHtm.Lines.Text);
      mCptRenduHtm.Lines.Text := ExchangeVarCpt('&DATE',mCptRenduHtm.Lines.Text);
      mCptRenduHtm.Lines.Text := ExchangeVarCpt('&DATE',mCptRenduHtm.Lines.Text);
      mCptRenduHtm.Lines.Text := ExchangeVarCpt('&HEURE',mCptRenduHtm.Lines.Text);
      mCptRenduHtm.Lines.Text := ExchangeVarCpt('&HEURE',mCptRenduHtm.Lines.Text);
      mCptRenduHtm.Lines.Text := ExchangeVarCpt('&LABEL',mCptRenduHtm.Lines.Text);
      mCptRenduHtm.Lines.Text := ExchangeVarCpt('&LABEL',mCptRenduHtm.Lines.Text);
      mCptRenduHtm.Lines.Text := ExchangeVarCpt('&RESLABEL',mCptRenduHtm.Lines.Text);
      mCptRenduHtm.Lines.Text := ExchangeVarCpt('&RESLABEL',mCptRenduHtm.Lines.Text);
      mCptRenduHtm.Lines.Text := ExchangeVarCpt('&FILE',mCptRenduHtm.Lines.Text);
      mCptRenduHtm.Lines.Text := ExchangeVarCpt('&FILE',mCptRenduHtm.Lines.Text);
     
      mCptRenduHtm.Lines.Text := AnsiReplaceStr(mCptRenduHtm.Lines.Text,#$D#$A,' ');
      mCptRenduHtm.Lines.SaveToFile(Compilation_FichierDestHtm);
      ImprimerCRT ; // Appel de la fonction d'impression
    end;
    Ces fonctions sont en privées
    mais je ne pense pas que cela crée de probleme et j'ai fait des test ca viendrai pas de la.

    et donc j'ai toujours ce message d'erreur :
    "Tentative de revocation d'une cible qui n'a pas été ouverte"

    ma dernière idée viendrai sur le faite de l'ouverte et la sauvegarde de la page avant l'impression peut etre devrai ajouter une instruction pour fermer la page ou je ne sais pas trop quoi, c'est une idée et je ne sais pas comment la mettre en place en plus

    encore un grand merci pour le coups de main

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 282
    Points : 102
    Points
    102
    Par défaut
    je reactualise le message car je suis toujours en galere sur ce probleme

  13. #13
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 219
    Points : 2 306
    Points
    2 306
    Par défaut
    bonjour,

    tu peux aussi utiliser un Timer qui lance l'impression dans sa méthode OnTimer et tu le rend Enable après ton navigate.

    @++
    Dany

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 282
    Points : 102
    Points
    102
    Par défaut
    j'ai essayer avec un sleep ca n'a rien changer tu pense qu'un timer agirai différement

  15. #15
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 219
    Points : 2 306
    Points
    2 306
    Par défaut
    bonjour,

    la différence entre un timer et un sleep, c'est que le timer n'est pas bloquant, par conséquent il laisse le code se poursuivre, et le webbrowser terminer son chargement et les traitements des messages windows. Maintenant, c'est une solution arbitraire, tu n'as pas de garantie quand à la fin du chargement au moment où le ontimer va se produire.

    @++
    Dany

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 282
    Points : 102
    Points
    102
    Par défaut
    le sleep empecherai la page de se charger d'apres ce que tu me dit ???

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 6
    Points
    6
    Par défaut Idée de solution
    Salut,

    je ne sais pas si tu as trouvé une solution à ton pb. J'ai eu le même que toi et j'ai découvert l'événement onDocumentComplete dans le TWebBrowser qui permet de réaliser l'impression une fois que le chargement dans le browser est fini.

    Voici mon code et ça fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TFormWebBrowser.WebBrowser1DocumentComplete(ASender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
    var vaIn, vaOut: OleVariant;
    begin
      try
       WebBrowser1.ControlInterface.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut);
       except
        on E:Exception do
            MessageDlg('Pb impression:' + E.Message, mtError, [mbOK], 0);
        end;
    end;
    Voilà , a+

Discussions similaires

  1. Supprimer message d'erreur du webbrowser
    Par mecyber25 dans le forum Web & réseau
    Réponses: 2
    Dernier message: 11/07/2011, 11h52
  2. [AC-2003] Message d'erreur à l'impression
    Par Xtine dans le forum IHM
    Réponses: 2
    Dernier message: 03/02/2010, 14h49
  3. Réponses: 0
    Dernier message: 14/12/2009, 16h27
  4. Message d'erreur - le service d'impression ne fonctionne pas
    Par Louis Griffont dans le forum Windows XP
    Réponses: 1
    Dernier message: 15/02/2009, 14h39
  5. Réponses: 1
    Dernier message: 17/06/2008, 18h03

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