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 :

Questions sur le composant CppWebBrowser


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Par défaut Questions sur le composant CppWebBrowser
    Bonjour à tous.

    Dans le but de créer un navigateur de type : Borne Internet Publique, j'utilise le composant CppWebBrowser.

    Mon application est presque finie a 2 détails près :

    1) J'aimerais désactiver le clic droit dans le CppWebBrowser, je ne vois pas comment faire, avez vous une solution ?

    2) Malheureusement, certains sites ont des liens qui s'ouvrent en popup lancant par la même occasion Internet Explorer et j'aimerais éviter cela.

    Je vous remercie d'avance pour votre aide !

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Par défaut
    Salut
    Pour ton clic droit
    [HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Restrictions]
    "NoBrowserContextMenu"=dword:00000001

    Cà fonctionne depuis windows 98 jusqu à ( pour moi ) seven et IE 8
    Testé egalement dans l extension IE pour firefox , pas de souci

    Vois aussi

    NoBrowserClose Désactive la fermeture des fenêtres d Internet Explorer par la barre de titre, par le menu Fichier, par la barre des tâches, par le raccourci Alt + F4, etc...
    NoBrowserContextMenu Désactive le clic droit sur les pages Web pour afficher le menu contextuel.
    NoBrowserOptions Désactive la commande Options Internet du menu Outils.
    NoBrowserSaveAs Désactive la commande Enregistrer sous du menu Fichier.
    NoFavorites Désactive le menu Favoris.
    NoFileNew Désactive la commande Nouveau du menu Fichier.
    NoFileOpen Désactive la commande Ouvrir du menu Fichier.
    NoSelectDownloadDir Désactive la sélection d un dossier de téléchargement lorsque vous téléchargez un fichier. Vous ne pouvez que cliquer sur le bouton Ouvrir.
    NoTheaterMode Désactive le mode d affichage en plein écran (via la raccourci clavier F11 ou par le menu Affichage).
    NoViewSource Désactive la commande Source du menu Affichage et du menu contextuel.
    NoNavButtons Désactive les boutons Précédente et Suivante de la barre d outils.
    NoPrinting Désactive les commandes Imprimer, Aperçu avant impression, et Mise en page du menu Fichier.


    Pour ton histoire de popup , fais un programme qui detecte IE et le ferme
    Pour pousser le vice , fais en un autre qui surveille , si le premier est en marche et qui le relances au cas où
    Et bien sur meme chose pour le 1er sauf qu il surveille l existence du 2eme

    Je te conseille aussi de surveiller l explorer , les boites de dialogues sauvegarder et ouvrir ( genre site d upload ) , menu demarrer , gestionnaire des taches , raccourcis clavier , ...

    Dans ton 1er programme créé , utilises une liste blanche de processus , tout ce qui n est pas dedans , sera fermé

    Allez vite fait en batch avec une sortie en csv donc exploitable en c++ qui te donne ta liste blanche
    Tasklist >1.txt /FO CSV

    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
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
    Memo1->Clear();
    ShellExecute(0,"","cmd.exe"," /c Tasklist >1.txt /FO CSV  /FI \"USERNAME ne AUTORITE NT\SYSTEM\" /FI \"STATUS eq running\"  ",NULL, SW_SHOWNORMAL );
    Sleep(2000);
    TStringList *fichier = new TStringList();
    fichier->LoadFromFile( "1.txt" ) ;
    TStringList *ligne ;
      for( int i=1; i< fichier->Count; i++ )
          // 1 car la 1ere ligne contient le nom des colonnes
         {ligne = new TStringList() ;
          ligne->Text = StringReplace(fichier->Strings[i], ',' , "\n", TReplaceFlags()<< rfReplaceAll );
            for(int j=0; j < ligne->Count; j++)
            {  if ( j%5==0 )
               // 5 car "Nom de l'image","PID","Nom de la session","Num‚ro de session","Utilisation m‚moire"  Comme 5 colonnes
                {Memo1->Lines->Add(  StringReplace(ligne->Strings[j], '"' , "", TReplaceFlags()<< rfReplaceAll ) ) ;
                 }
            } delete ligne    ; }   delete fichier ;
     
    }

    Apres il existe taskkill
    Et plus particulierement avec l argument IM
    L exemple ci dessous aura comme effet de fermer notepad
    TASKKILL /IM notepad.exe

    On peut imaginer celà avec un programme ne faisant pas partie de la liste blanche
    Apres tu vas me dire que la fenetre dos qui apparait , c est pas beau
    Alors je conseillerai cmdow

    Le fichier cmdow.exe n'est pas un virus, mais une commande de Windows qui permet de modifier la position, la taille, et même de cacher une fenêtre console (outil qui permet de taper des lignes de commandes pour les programmeurs). Meme si depuis peu, certains logiciels antivirus détectent ce petit logiciel comme un virus, parce que justement il est capable d'agir sur des fenêtres de Windows.

    Si cmdow ne fonctionnait pas , utilises chp
    http://www.commandline.co.uk/chp/

    Dans un .bat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    chp cmd.exe /c "tasklist >1.txt /fo csv"
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute(0,"","C:\\Windows\\System32\\CHP.exe ","cmd.exe /c \"Tasklist >1.txt /FO CSV  \"  ",NULL, SW_SHOWNORMAL );

    Voilà tu n as plus qu à ajouter un timer et mettre dans son evenement une fonction qui recupere les processus et les compare à la liste blanche

    J ai juste un petit souci , je n arrive pas avec chp à passer les arguments /fi ... de tasklist à travers un shellexecute

    Bonne journée

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Par défaut
    Bonjour cedni, merci pour ta réponse,

    Pour le clic droit, j'ai fait comme tu m'a dis, ca fonctionne parfaitement.

    Par contre pour les popups on ne s'est pas compris :

    Les popups sont bloqués complétement pour le moment dans mon application.
    C'est a dire que si on click sur un lien qui est sensé s'ouvrir dans une nouvelle fenetre, c'est bloqué et justement, ce que je veux c'est que cette page qui devait s'ouvrir en popup, s'ouvre dans la page actuelle !

    Merci d'avance

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Par défaut
    donne moi l url d un site qui fait çà et je verrais ce que je peux faire

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Par défaut
    Citation Envoyé par cedni Voir le message
    donne moi l url d un site qui fait çà et je verrais ce que je peux faire
    Voila un exemple :

    Le site http://www.auchan.fr

    Si tu cliques sur Billeterie à gauche, il ouvre dans une nouvelle page, cependant avec le composant CppWebBrowser, il ouvre Internet Explorer ( j'ai réussi a le bloquer ) mais j'aimerais quand meme ouvrir la page, dans le composant CppWebBrowser

    Merci d'avance

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Par défaut
    lol
    test avec firefox et ie
    je tombe sur un 404 , t en as pas un autre ?
    http://www.auchan.fr/index.jsp#

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Par défaut
    Un lien target blank , c est bon ?

    Sinon pour le moment , j arrive à afficher le lien externe dans l activex mais j ai tout de meme IE qui se lance

    Vois egalement ce lien
    http://www.bsalsa.com/

    C est un browser multi onglet dispo pour delphi , mais souvent on arrive à installer les meme composants

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void __fastcall TForm1::CppWebBrowser1NewWindow2(TObject *Sender,    LPDISPATCH *ppDisp, VARIANT_BOOL *Cancel)
    {
    *Cancel=true;
    WideString RedirectUrl = Memo1->Text.c_str()   ;
    //CppWebBrowser1->Stop();
     CppWebBrowser1->Navigate(RedirectUrl);
    }
    //-----------------------------------------------
     
    void __fastcall TForm1::CppWebBrowser1StatusTextChange(TObject *Sender,  BSTR URL)
    {
    Memo1->Text=URL ;  // variable recuperée BSTR URL
    }
    voilà çà devrait etre bon
    donc deux evenements : StatusTextChange et NewWindow2

    *Cancel=true; , c etait çà
    Quelqu'un peut m expliquer la signification de l asterisque devant Cancel ??

    Avec ce code on voit de suite combien il serait aisé de créer un navigateur à onglets ...

  9. #9
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Cancel est un pointeur, et la variable Cancel contient donc une adresse, pour pouvoir consulter le contenu de l'adresse ou pour pouvoir le modifier il faut mettre * devant la variable, ce qui signifie pour le compilateur "va à l'adresse contenu par la variable qui suit".

  10. #10
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Par défaut
    Merci il va falloir que j assimile les pointeurs

  11. #11
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Oui,
    pour ca tu peut consulter ce tuto, mais attention car il parle du C et du C++ qu'il faut bien différentier et il est assez vieux, il y as maintenant de merveilleux outils qui permettent de ce passer de pointeur : http://chgi.developpez.com/pointeur/

    Sinon il y as le très bon penser en C++ que je recommande de lire et sont chapitre sur les pointeurs

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Par défaut
    Citation Envoyé par cedni Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void __fastcall TForm1::CppWebBrowser1NewWindow2(TObject *Sender,    LPDISPATCH *ppDisp, VARIANT_BOOL *Cancel)
    {
    *Cancel=true;
    WideString RedirectUrl = Memo1->Text.c_str()   ;
    //CppWebBrowser1->Stop();
     CppWebBrowser1->Navigate(RedirectUrl);
    }
    //-----------------------------------------------
     
    void __fastcall TForm1::CppWebBrowser1StatusTextChange(TObject *Sender,  BSTR URL)
    {
    Memo1->Text=URL ;  // variable recuperée BSTR URL
    }
    voilà çà devrait etre bon
    donc deux evenements : StatusTextChange et NewWindow2

    *Cancel=true; , c etait çà
    Quelqu'un peut m expliquer la signification de l asterisque devant Cancel ??

    Avec ce code on voit de suite combien il serait aisé de créer un navigateur à onglets ...
    C'est donc l'evenement NewWindow2 qui génère la page IE lors d'une popup ?
    Je ne peux pas tester actuellement car je suis au travail, je testerais ce soir dès mon retour mais merci d'avance si ca fonctionne

Discussions similaires

  1. Questions sur le composant tJDCB*
    Par Scorpio85 dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 10/06/2008, 19h02
  2. Question sur le composant WebBrowser
    Par djmustru dans le forum Delphi
    Réponses: 4
    Dernier message: 15/03/2007, 11h14
  3. une question sur les composants
    Par m14w dans le forum Delphi
    Réponses: 2
    Dernier message: 17/05/2006, 19h26
  4. [C#] Question sur le composant listview...
    Par irnbru dans le forum Windows Forms
    Réponses: 4
    Dernier message: 18/11/2005, 10h26
  5. petite question sur le composant IBX ...
    Par vbcasimir dans le forum Bases de données
    Réponses: 4
    Dernier message: 05/01/2005, 10h33

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