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

API, COM et SDKs Delphi Discussion :

Comment lancer msedge.exe avec une url, mais captif dans un TPanel ?


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    Informaticien retraité
    Inscrit en
    Mars 2010
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 364
    Billets dans le blog
    1
    Par défaut
    Merci pour ces informations.

    Les prérequis pour Edge étaient bien remplis, mais par acquit de conscience, j'ai désinstallé le kit de démo Edge ainsi que le SDK et ke les ai réinstallés.

    Je n'ai aucune erreur lors de la compilation ou de la création de l'exécutable, congtrairement à ce qui est suggéré dans ton post:
    Nom : aa1.png
Affichages : 87
Taille : 12,0 Ko

    Les messages de construction sont:
    Nom : aa2.PNG
Affichages : 82
Taille : 5,9 Ko

    J'ai adapté l'URL pour Google
    Le résultat est identique pour EdgeBrowser: AUCUNE réqction lors des clics sue les boutons associés.

    Je n'ai pas trouvé où paramétrer ceci:
    2- Configuration de projet pour les DLL de chargement de WebView2 // ça, par contre ....
    Premier problème : "common_DLL_folder_path\x86\WebView2Loader.dll" n'est pas un chemin valide donc, la premiere chose est de trouver le bon chemin
    pour moi : C:\Users\serge\OneDrive\Documents\Embarcadero\Studio\23.0\CatalogRepository\EdgeView2SDK-1.0.2739.1\Bin\x86 (ou x64 selon la cible OS)
    Par contre, le dossier
    C:\Users\klausgunther\OneDrive\Documents\Embarcadero\Studio\23.0\CatalogRepository\EdgeView2SDK-1.0.2739.1\Bin\x86
    existe bien, avec le contenu requis...

    A toutes fins utilies, voici l'état actuel de mon projt Test_Browsers (en pièce jointe).
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 593
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par KlausGunther Voir le message
    Je n'ai pas trouvé où paramétrer ceci: Configuration de projet pour les DLL de chargement de WebView2
    Par contre, le dossier C:\Users\klausgunther\OneDrive\Documents\Embarcadero\Studio\23.0\CatalogRepository\EdgeView2SDK-1.0.2739.1\Bin\x86
    c'est un point essentiel, je croyais que l'image (1) aurait suffit à elle même, niveau menu Projet/options ou Ctrl+Maj+F11
    l'autre solution serait tout simplement de copier la dite dll dans le répertoire de l'éxecutable

    Je n'ai aucune erreur lors de la compilation ou de la création de l'exécutable, congtrairement à ce qui est suggéré dans ton post:
    suggéré oui, mais après l'étape 2, à savoir après avoir indiqué l'évènement post-construction

  3. #3
    Membre éclairé

    Homme Profil pro
    Informaticien retraité
    Inscrit en
    Mars 2010
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 364
    Billets dans le blog
    1
    Par défaut
    Effectivement, copier WebView2Loader.dll dans le dossier de l'exécutable résout le problème, et tout fonctionne bien.

    Mais c'est dommage d'être obligé de copier celle DLL x fois...
    Et malgré ton étonnement (justifié), je n'ai pas trouvé où configurer le chemin vers cette DLL.
    Sous Delphi 6 PE, je fais ça sans problème. Mais je suis novice en D11 et D12 et je n'ai pas trouvé ce paramétrage.

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 593
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par KlausGunther Voir le message
    Et malgré ton étonnement (justifié), je n'ai pas trouvé où configurer le chemin vers cette DLL.
    tu dois quand même bien avoir dans le menu principal Projet et au sein de ce menu (tout en bas) Options ?
    Je sais que les versions community ont des différences mais pas à ce point là, si ?
    Par contre, peut-être que les 'Evénements de contruction' manquent à l'appel mais ça hélas, je ne peux le contrôler

    Mais c'est dommage d'être obligé de copier celle DLL x fois...
    je ne sais pas si mettre cette dll dans syswow64 (ou system32 en cas de 64 bits) ferait l'affaire, certainement.
    A moins qu'une propriété du composant permette un pointage à l'instar des dll de cerataines connexions au base de données.
    Etant donné que je n'ai jamais inclus de web viewers dans mes applications pros je ne maitrise pas trop

  5. #5
    Membre éclairé

    Homme Profil pro
    Informaticien retraité
    Inscrit en
    Mars 2010
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 364
    Billets dans le blog
    1
    Par défaut
    tu dois quand même bien avoir dans le menu principal Projet et au sein de ce menu (tout en bas) Options ?
    Oui, bein sûr !

    Ca, je l'ai trouvé. ET j'ai exploré ce menu dans tous les sens, mais je n'ai rien trouvé qui ressemble à ""common_DLL_folder_path\x86\WebView2Loader.dll".
    Par contre, dans ces options, jce qu'il resseemble le plus ce que tu mentionnes, c'est ceci:
    Nom : aa1.png
Affichages : 90
Taille : 23,9 Ko

    Et la DLL est bien dans le dossier suivant:
    C:\Users\klausgunther\Documents\Embarcadero\Studio\23.0\CatalogRepository\EdgeView2SDK-1.0.2739.1\Bin\x86\WebView2Loader.dll

    Normalement, le programme devrait le trouver via BDSCatalogRepository, non ? Sinon, où est-ce que je paramètre cela ?

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 933
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 933
    Par défaut
    Citation Envoyé par KlausGunther Voir le message
    Normalement, le programme devrait le trouver via BDSCatalogRepository, non ?
    Et par quel miracle ?

    Comme n'importe quel DLL, les chemins de recherche sont : répertoire system32, etc. et ceux définis par la variable d'environnement PATH. Donc redéfinis cette variable dans les options de ton projet et ajoute le chemin complet vers cette dll.

    Mais un essai montre qu'elle n'est chargée qu'au Navigate, tu pourrais dès lors redéfinir PATH par code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      {$IFDEF Debug}
      var BDSRepo :array[0..MAX_PATH -1] of char;
      ExpandEnvironmentStrings('%BDSCatalogRepository%\EdgeView2SDK-1.0.2739.1\Bin\x86', BDSRepo, MAX_PATH);
     
      const Path = GetEnvironmentVariable('PATH') +';' +BDSRepo;
      SetEnvironmentVariable('PATH', PChar(Path));
      {$ENDIF}
     
      EdgeBrowser1.Navigate('https://domain.com');
    end;

  7. #7
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 086
    Par défaut
    Pour la DLL pour faciliter le déploiement, intègre la en ressource ta DLL, avec ParamStr(0) ou GetModuleFileName tu connais le nom de l'EXE hote pour l'y placer.
    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

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 593
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par KlausGunther Voir le message
    Et la DLL est bien dans le dossier suivant:
    C:\Users\klausgunther\Documents\Embarcadero\Studio\23.0\CatalogRepository\EdgeView2SDK-1.0.2739.1\Bin\x86\WebView2Loader.dll
    Normalement, le programme devrait le trouver via BDSCatalogRepository, non ?
    Donc, tu as bien la partie évènements de construction et c'est là qu'il faut intervenir
    Oui, BDSCatalogRepository est bien renseigné mais le hic c'est que les évènements de construction c'est l'équivalent d'un fichier batch . Perso je n'ai pas réussi à accéder au %BDSCatalogRepository% via shell ou cmd, c'est pourquoi j'ai indiqué le chemin entier

  9. #9
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 933
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 933
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    je n'ai pas réussi à accéder au %BDSCatalogRepository% via shell ou cmd
    Ces variables sont définies dans l'environnement Delphi et non au niveau global. Elles sont accessibles dans un batch s'il est lancé depuis l'événement de construction puisque dans ce cas il hérite du processus parent.

    Sans batch dans l'événement de construction, on accède à ces variables par $(BDSCatalogRepository).

  10. #10
    Membre éclairé

    Homme Profil pro
    Informaticien retraité
    Inscrit en
    Mars 2010
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 364
    Billets dans le blog
    1
    Par défaut
    Pour approfondir les recherches, j'ai fait un petit projet opérationnel en D6, et j'ai adapté mon projet en D12 de façon symétrique.

    Version Delphi 6:
    Préalable:
    1. définir ine variable dummyForm, mais sans créer la form

    Dans le constructeur:
    1. créer une classe simple sans racine
    2. ajouter un TPanel standard à cette classe, avec Owner=dummyForm
    3. assigner le handle de ma form cible à ParentWindow de ce panel
    4. ajouter un TMemo standard à cette classe, avec Owner=panel
    5. assigner le handle du panel à ParentWindow de ce mémo
    6. configurer position et dimensions du mémo dans le panel

    Par un bouton "Créer":
    1/ appeler le constructeur avec le handle de Form1 en paramètre

    Résultat: Mon panel avec le mémo apparaît dans la Form1. Je peux le supprimer, le recréer, etc. Tout fonctionne.

    Version Delphi 12:
    Préalable:
    1. définir ine variable dummyForm, mais sans créer la form

    Dans le constructeur:
    1. créer une classe simple sans racine
    2. ajouter un TPanel standard à cette classe, avec Owner=dummyForm
    3. assigner le handle de ma form cible à ParentWindow de ce panel
    4. ajouter un TEdgeBrowser standard à cette classe, avec Owner=panel
    5. assigner le handle du panel à ParentWindow de ce EdgeBrowser
    6. configurer position et dimensions du EdgeBrowser dans le panel

    Par un bouton "Créer":
    1/ appeler le constructeur avec le handle de Form1 en paramètre

    Résultat: il y a une viloation de mémoire lors du chargement de ParentWindow du Panel, avant même de penser au TEdgeBrowser


    Conclusion: il y a une différence importante entre D6 et D12 que je ne comprends pas.

    Auriez-vous une idée comment résoudre ce problème ?
    En pièces jointes, vous trouverez un fichier ZIP avec mon projet en D6 et un autre ZIP avec le projet de DLL et celui du programme de test associé.
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/04/2014, 17h06
  2. [Windows Phone 8] [Debutant] Lancer le navigateur avec une url depuis une application
    Par krizentherm dans le forum Windows Phone
    Réponses: 3
    Dernier message: 06/04/2014, 12h39
  3. [Débutant] Comment lancer un exe avec un autre utilisateur que Système
    Par Amelie_sc dans le forum C#
    Réponses: 6
    Dernier message: 04/07/2013, 12h24
  4. [CKEditor] Comment configurer l'éditeur avec une url
    Par whitespirit dans le forum Bibliothèques & Frameworks
    Réponses: 5
    Dernier message: 12/06/2008, 11h00
  5. comment lancer un exe avec parametre avec shell
    Par niceen dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/05/2008, 19h56

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