ObjReader Community

SDK programming => Canary Bay => Topic started by: Patrice Terrier on June 03, 2020, 10:39:39 am

Title: Canary Bay WD17+ (first release)
Post by: Patrice Terrier on June 03, 2020, 10:39:39 am
(http://www.objreader.com/download/images/canary_bay_logo.png)

For those concerned:

Because the old Internet Explorer web browser is completely outdated,
I looked for an alternative and I came across this magnificent free C++ project written with Visual Studio 2019.

webview2 (https://docs.microsoft.com/en-us/microsoft-edge/webview2/)

This project requires installing

1 - Microsoft Edge Canary (download (https://www.microsoftedgeinsider.com/fr-fr/download))
2 - Microsoft FREE Visual Studio 2019 Community(download (https://visualstudio.microsoft.com/en/vs/community/?rr=https%3A%2F%2Fwww.google.com%2F))
3 - WebView2Browser (download (https://github.com/MicrosoftEdge/WebView2Browser))

Useful links:
https://docs.microsoft.com/en-us/microsoft-edge/webview2/reference/win32/0-9-488-reference-webview2
https://github.com/MicrosoftEdge/WebView2Samples/tree/master/WebView2APISample


And here is The "Canary Bay" WD17+ example that i have done for WinDev:

(http://www.objreader.com/download/images/canary_bay.png)


History:
06-02-2020 Beta version 1.00
                  First release
06-03-2020 Beta version 1.01
                  With code cleanup, and minor fixes. Plus new logo, and dock/undock button.
06-04-2020 Beta version 1.02
                  All the WDcom code has been replaced with direct call to the core flat API to get rid of wd170com64.dll,
                  thus saving a massive 1999 Kb.
06-05-2020 Beta version 1.03
                  When closing the last Browser TAB, the parent region was not restored living the desktop visible in the clipping area,
                  this has been fixed.

Note: Attachments are only available to registered users.
You must first register in order to see them.
See here what to do to register (http://www.objreader.com/index.php?topic=5.0)


Title: Canary Bay WD17+ beta version 1.02
Post by: Patrice Terrier on June 04, 2020, 06:18:12 pm
The beta version 1.02 has been released,
both source.zip and binary.zip are attached to the first post of this thread.

Because i hate bloated code, i have replaced all calls to the WDcom64.dll by direct use of the core flat API,
thus saving a massive 1999 Kb.

This also ensure that i shall be able to re-use the same code with the other languages of my soap box.

To reduce the size of the WD17 binary framework with this project, use only:

(http://www.objreader.com/download/images/WDexe.jpg)


Title: Re: Canary Bay WD17+ (first release)
Post by: Patrice Terrier on June 05, 2020, 02:14:45 pm
The beta version 1.03 has been released,
both source.zip and binary.zip are attached to the first post of this thread.

When the last Browser TAB was closed, the parent region was not restored living the desktop visible in the clipping area.
(thanks to Jean-Michel who reported this behavior)

To see for the code changes, search for "// Beta version 1.03"

Title: Re: Canary Bay WD17+ (first release)
Post by: Patrice Terrier on June 05, 2020, 05:45:28 pm
A 32-bit version of the framework has been attached to the first post of this thread, in:

WebView2Loader_32-bit.zip
Title: Re: Canary Bay WD17+ (version 1.04)
Post by: Patrice Terrier on June 13, 2020, 11:00:29 am
Jean-Michel

Voici la version 1.04, qui permet de changer l'URL utilisée en cas d'ouverture d'un nouvel onglet.

PROCEDURE StartBrowser(LOCAL sURL is string)
// If the Browser is already running, then shut it down in order to create a brand new page
IF (IsWindow(gP.hBrowser)) THEN
   SendMessageA(gP.hBrowser, WM_CLOSE, 0, 0)
   gP.hBrowser = 0
END

fname is string = "WebView2Browser"   
fConfig is string = fTempPath() + fname + ".bin"

// Customize the Browser size
cfg is SETBIN
lp is POINT; ClientToScreen(Handle(Browser_Template..Name), lp)
cfg.dwExStyle = WS_EX_TOOLWINDOW // Don't show the Browser icon on the taskbar
cfg.dwStyle = WS_POPUP | WS_VISIBLE
cfg.hParent = gP.hMain
cfg.x = lp.x
cfg.y = lp.y
cfg.w = Browser_Template..Width
cfg.h = Browser_Template..Height
// Version 1.04 to setup new tab to a specific URL
cfg.defaultURL = Complete(AnsiToUnicode("https://www.google.fr/"), 520, Caract(0))
// Create the config file
fHandle is int = fOpen(fConfig, foCreate)
IF fHandle <> -1 THEN
   fWrite(fHandle, &cfg, Dimension(cfg))
   fClose(fHandle); fHandle = 0
END


Est-ce que çà correspond à ce que vous voulez faire ?

Title: Re: Canary Bay WD17+ (latest release)
Post by: Jean-Michel INGELS on June 14, 2020, 04:05:33 pm
Bonjour Patrice et encore une fois merci beaucoup pour votre réactivité.

La version 1.04 apporte effectivement le comportement attendu de pouvoir ouvrir tout nouvel onglet sur une url déterminée par programmation et différente de celle imposée originellement par Webview2Browser (moteur Bing).

Je n'ai rencontré aucune difficulté à intégrer votre solution dans l'exemple WD Bureautique de PC SOFT que j'utilise pour une application où l'utilisation d'une app sur le web (et donc désormais via votre solution) et d'une application de bureautique sont nécessaires.

Votre code est très lisible (aucune verbosité) et permet de comprendre ce que vous réalisez dans votre dev.

Cela fait un bon moment que je cherchais une solution fonctionnelle. J'ai essayé les différentes pistes proposées sur d'autres forums mais elles sont parfois complexes à mettre en oeuvre contrairement à votre solution dont l'approche paraît si simple qu'on se demande pourquoi personne n'y a pensé auparavant.

De plus, sur d'autres forums, il est difficile de faire progresser une solution quand cela n'est pas une priorité pour le développeur.

Visiblement pour vous, il en est tout autre car vous êtes très réactif et faites preuve de désir de perfection (si je peux m'exprimer ainsi, c'est pas du fayotage, mais vous allez au-delà de ce qu'on demande dans le souci d'avoir une solution très pro et cela est rare).

Persuadé de ce à quoi vous vous attachez à être auprès de votre communauté, j'ai déjà réalisé un premier don Paypal et j'en ferai un second prochainement, car cela mérite encouragement et reconnaissance.

Bien à vous,
Jean-Michel

Title: Re: Canary Bay WD17+ (latest release)
Post by: Patrice Terrier on June 14, 2020, 04:20:06 pm
Merci Jean-Michel pour votre commentaire (et pour le don).
Title: Re: Canary Bay WD17+ (latest release)
Post by: Bernard Kunzy on June 15, 2020, 06:47:37 pm
Super et tellement plus simple à utiliser que les usines a gaz dot.NET.

Merci !
Title: Re: Canary Bay WD17+ (latest release)
Post by: Patrick Allémoz on June 23, 2020, 10:55:07 pm
Bonjour,

Projet sympathique mais qui pour moi reste inutilisable en clientèle vu qu'il faut installer une version spécifique de dev de Edge sur chaque poste qui en plus est mise à jour tous les jours ...

Tu cherches a gagner 2 Mo en supprimant une DLL de Windev mais derrière tu fais passer des centaines de Mo pour l'update journalier ... ce n'est pas très cohérent.

Néanmoins cela reste une très bonne alternative aux autres projets disponibles sur le net.
Title: Re: Canary Bay WD17+ (latest release)
Post by: Patrice Terrier on June 24, 2020, 12:10:40 pm
Patrick,

Je ne partage pas votre opinion, car dès que la version officielle sera libérée il n'y aura plus rien a installer.

>>tu fais passer des centaines de Mo pour l'update journalier
Pour moi qui l'utilise tous les jours je peux vous dire que je n'ai jamais été gêné par les mises-à-jour, dont je ne me suis jamais rendu compte.

A propos de dot.NET et les "frameworks" monstrueux en général (sic)
J'ai abandonné C# en 2005, pour passer au C/C++ natif, et je n'ai jamais regretté ce choix qui me permet de créer de véritables DLL natives qui n'ont rien a voir avec les prétendus DLL dot.NET qui sont des usines à gaz (à cause des dépendances multiples).

Le plus important pour moi est que j'ai la main sur tout, non seulement le code WL, mais surtout sur le code C++ du browser lui-même, sans quoi je n'aurai pas pu permettre son intégration dans WinDev.
Et pour illustrer mon propos, j'ai une grosse surprise pour la prochaine version...
Title: WD26
Post by: Patrice Terrier on October 01, 2020, 10:17:23 am
WD26 est annoncé

Comme par hasard, la principale nouveauté, est le support de Chromium en mode natif...

Dixit :
"Le code source d'un navigateur est livré en version 26, vous pouvez utiliser, modifier, personnaliser ce code pour l'inclure dans vos applications.
Utiliser un navigateur de ce type permet de s'assurer d'une présentation identique des pages pour tous vos utilisateurs.
Ce type de navigateur permet également de définir facilement la liste des seuls sites qui peuvent être ouverts, ce qui peut être utile en milieu professionnel.
"

L'avantage du projet Canary Bay, est qu'il fonctionne avec toutes les versions de WinDev ainsi qu'avec tous les langages de programmation que ce soit en mode 32 ou 64-bit.
Title: Re: Canary Bay WD17+ (latest release)
Post by: Michael MALKA on March 19, 2021, 08:12:09 pm
Bonsoir, je suis un peut perdu car je ne maitrise absolument pas le languace C.
j'ai donc testé votre application, elle fonctionne impeccable.
Par contre je n'arrive pas a trouver comment arriver a récupérer l'adresse du site que je visite .
Je m'explique je lance le navigateur sur l'adresse de google, et dans le moteur de recherche de celui-ci je tape une recherche, apres je clique sur le lien qu'il me propose.
J'arrive sur le site que je veux. Et je voudrais récupérer l'adresse de ce site par un bouton par exemple.
Et je n'arrive pas a voir comment faire, j'ai regardé la procédure StartBrowser et LoadURL, mais j'arrive pas à trouver.
Pourriez vous m'aider.
Merci l
Title: Re: Canary Bay WD17+ (latest release)
Post by: Patrice Terrier on March 20, 2021, 11:13:03 am
Je n'ai pas travaillé sur ce code depuis un bon moment, il faut que je me replonge dedans et que je fasse des recherches car je ne me souviens plus...
Title: Re: Canary Bay WD17+ (latest release)
Post by: Michael MALKA on March 20, 2021, 12:41:45 pm
Bonjour, je vous en remercie bien
Title: Re: Canary Bay WD17+ (latest release)
Post by: Patrice Terrier on March 22, 2021, 02:42:14 pm
Michael

I made further investigation of the WV2B C++ code, and i think that i should be able to return you the URL entered/selected by the user.

Après avoir fait des recherches dans le code source de WV2B, je pense être en mesure de retourner l'URL saisie par l'utilisateur.
Cependant, ceci implique la modification du code source de WV2B ainsi que celui de l'application WinDev, mais comme j'ai vu que vous cherchez du coté du code dot.NET, vous avez peut être déjà trouvé une solution à votre problème.
Title: Re: Canary Bay WD17+ (latest release)
Post by: Michael MALKA on March 23, 2021, 10:59:20 am
Bonjour Patrice, oui j'ai trouvé du coté de dot.Net car bien que votre application soit légère et fonctionnelle je ne parviens pas à l'intégrer facilement sur mon application (pour  le résultat que je cherche). Ne connaissant rien en C et débutant en Windev il m'est difficile de comprendre comment l'integrer à mon projet. Je vous remercie pour vos réponses rapides.
Cordialement
Title: Re: Canary Bay WD17+ (latest release)
Post by: Patrice Terrier on March 25, 2021, 07:42:05 pm
Michael

J'ai effectué la modification qui permet de connaître l'URL saisie par l'utilisateur dans le champ navigation.
Pour le moment je me contente de l'afficher dans un TRACE de la façon suivante

PROCEDURE ProcessBrowserMessage(uMsg is unsigned int, wParam is unsigned int, lParam is system int)

// Beta version 1.03
IF wParam = WM_NCDESTROY THEN // Last Browser TAB is closing
   IF gP.hRgn THEN
      DeleteObject(gP.hRgn); gP.hRgn = 0
      SetWindowRgn(gP.hMain, gP.hRgn, False)
      IF BTN_Undock..Visible THEN
         Browser_Template..Y += gP.dock_offset // Beta version 1.03
         Browser_Template..Height -= gP.dock_offset // Beta version 1.03
      END//else
      
      BTN_Undock..Visible   = False
      BTN_Dock..Visible   = True
      
      WindowRedraw(gP.hMain)
      
   END
ELSE IF wParam = WM_SETTEXT THEN // version 1.08
   FILE_MAP_ALL_ACCESS is unsigned int = 983040 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010
   hMapFile is system int = API(KERNEL32, "OpenFileMappingA", FILE_MAP_ALL_ACCESS, False, "WV2B_MF")
   IF (hMapFile) THEN
      BUF_SIZE is int = MAX_PATH * 2
      pBuf is system int = API(KERNEL32, "MapViewOfFile", hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, BUF_SIZE)
      IF (pBuf) THEN
         Trace(StringRetrieve(pBuf, srUNICODEAddress))
         API(KERNEL32, "UnmapViewOfFile", pBuf)
      END
      API(KERNEL32, "CloseHandle", hMapFile)
   END
END

uMsg = uMsg; wParam = wParam; lParam = lParam
Title: Re: Canary Bay WD17+ (latest release)
Post by: Michael MALKA on March 26, 2021, 09:33:40 am
super merci beaucoup je teste ce weekend
Title: Re: Canary Bay WD17+ (latest release)
Post by: Patrice Terrier on March 26, 2021, 09:41:34 am
Puisque çà vous intéresse, je posterai un message dès que la version sera disponible...