Page 4 of 7

Re: Using WebView with Borland !!!

PostPosted: Mon Feb 14, 2022 12:52 pm
by Silvio.Falconi
Antonio Linares wrote:Por lo visto para Windows 10 hace falta instalar algo que en Windows 11 parece no ser necesario...

Paco, aparte del instalador de EverGreen, te suena haber instalado algo más para probarlo ?



Antonio,
On Windows Seven I have this error
Image

Re: Using WebView with Borland !!!

PostPosted: Mon Feb 14, 2022 4:30 pm
by Antonio Linares
Dear Silvio,

It seems as it is not Windows 7 compatible.

I will install a Windows 7 on VirtualBox to check it :-)

Re: Using WebView with Borland !!!

PostPosted: Mon Feb 14, 2022 5:48 pm
by Otto
Dear Antonio,

Is it possible to receive data from webview to FIVEWIN?

BTW, this is the same error I get on WINDOWS SERVER 2008 R2.

Best regards,
Otto

Re: Using WebView with Borland !!!

PostPosted: Mon Feb 14, 2022 7:09 pm
by Antonio Linares
Dear Otto,

> Is it possible to receive data from webview to FIVEWIN?

Yes

> BTW, this is the same error I get on WINDOWS SERVER 2008 R2

There is something else to install, we are trying to identify it

Re: Using WebView with Borland !!!

PostPosted: Tue Feb 15, 2022 7:24 am
by Silvio.Falconi
Antonio Linares wrote:Dear Silvio,

It seems as it is not Windows 7 compatible.

I will install a Windows 7 on VirtualBox to check it :-)



I seem run ok on Windows 7
https://docs.microsoft.com/en-us/micros ... /webview2/
Code: Select all  Expand view
WebView2 benefits

    Web ecosystem and skill set. Utilize the entire web platform, libraries, tooling, and talent that exists within the web ecosystem.

    Rapid innovation. Web development allows for faster deployment and iteration.

    Windows 7, 8, 10, and 11 support. Support for a consistent user experience across Windows 7, Windows 8, Windows 10, and Windows 11.

    Native capabilities. Access the full set of Native APIs.

    Code-sharing. Add web code to your codebase allows for increased reuse across multiple platforms.

    Microsoft support. Microsoft provides support and adds new feature requests when WebView2 releases at General Availability (GA).

    Evergreen distribution. Rely on an up-to-date version of Chromium with regular platform updates and security patches.

    Fixed Version distribution. Optionally package a specific version of the Chromium bits in your app.

    Incremental adoption. Add web components piece-by-piece to your app.

Supported platforms

A General Availability (GA) or Preview version of WebView2 is available for the following programming environments:

    Win32 C/C++ (GA)
    .NET Framework 4.5 or later
    .NET Core 3.1 or later
    .NET 5
    .NET 6
    WinUI 2.0 (Preview)
    WinUI 3.0

WebView2 apps can run on the following versions of Windows:

    Windows 11
    Windows 10
    Windows 10 IoT Enterprise LTSC x32 2019
    Windows 10 IoT Enterprise LTSC x64 2019
    Windows 10 IoT Enterprise 21h1 x64
    Windows 8.1
    Windows 7 **
    Windows Server 2019
    Windows Server 2016
    Windows Server 2012
    Windows Server 2012 R2
    Windows Server 2008 R2 **

**WebView2 support for Windows 7 and Windows Server 2008 R2 have the same support timeline as Microsoft Edge. See Microsoft Edge supported Operating Systems.

Re: Using WebView with Borland !!!

PostPosted: Tue Feb 15, 2022 9:05 am
by anserkk
The following code is working fine with Borland C Compiler via STATIC linking of the DLL. I have added the missing C wrapper definitions.

Code: Select all  Expand view
#include "FiveWin.ch"
function Main()

   local hWebView := WebView_Create()

   WebView_Navigate( hWebView, Html() ) // or use an URL
   
   SysWait( 2 )
   WebView_Bind( hWebView, "SendToFWH", SendToFWHAddress(), hWebView )    
   
   WebView_Eval( hWebView, 'document.getElementById( "user" ).value = "fivetech"' )
   WebView_Eval( hWebView, 'document.getElementById( "passwd" ).value = "1234"' )
   SysWait( 2 )
   WebView_Eval( hWebView, 'document.getElementById( "submit" ).click()' )
   
   WebView_Run( hWebView )
   WebView_Destroy( hWebView )  

return nil

function Html()

   local cHtml

   TEXT INTO cHtml
      data:text/html,
      <html>
         <head>
         </head>
         <body style="background-color:cyan">
            <h2>Using WebView from FWH</h2>
            <form method="post">
               <label for="fname">username:</label>
               <input type="text" id="user" name="username"><br><br>
               <label for="lname">password:</label>
               <input type="text" id="passwd" name="password"><br><br>
               <input type="submit" id="submit" value="Submit" onclick="alert('ok')">
            </form>            
         </body>
      </html>
   ENDTEXT      

return cHtml

#pragma BEGINDUMP

#include <hbapi.h>
#include <windows.h>
#include <hbvm.h>

void * webview_create(int debug, void * window );
void webview_run( void * w );
void webview_navigate( void * w, const char * url );
void webview_destroy( void * w );
void webview_eval( void * w, const char * javascript );
void webview_bind( void * w, const char * name, void * func, void * pvoid );

HB_FUNC( WEBVIEW_CREATE )
{
   hb_retptr( webview_create( 0, NULL ) );
}


HB_FUNC( WEBVIEW_RUN )
{
   webview_run( hb_parptr( 1 ) );
}

HB_FUNC( WEBVIEW_NAVIGATE )
{
   webview_navigate( hb_parptr( 1 ), hb_parc( 2 ) );
}

HB_FUNC( WEBVIEW_DESTROY )
{
   webview_destroy( hb_parptr( 1 ) );
}

HB_FUNC( WEBVIEW_BIND )
{
   webview_bind( hb_parptr( 1 ), hb_parc( 2 ), hb_parptr( 3 ), hb_parptr( 4 ) );
}

HB_FUNC( WEBVIEW_EVAL )
{
   webview_eval( hb_parptr( 1 ), hb_parc( 2 ) );
}

static void SendToFWH( const char * szNumRequests, const char * szJson, void * p )
{
   hb_vmPushSymbol( hb_dynsymGetSymbol( "WEBVIEW_SAVEVALUES" ) );
   hb_vmPushNil();
   hb_vmPushString( szNumRequests, strlen( szNumRequests ) );
   hb_vmPushString( szJson, strlen( szJson ) );
   hb_vmFunction( 2 );
}

HB_FUNC( SENDTOFWHADDRESS )
{
   hb_retnl( ( HB_LONG ) SendToFWH );
}

#pragma ENDDUMP

Re: Using WebView with Borland !!!

PostPosted: Tue Feb 15, 2022 9:58 am
by Silvio.Falconi
anserkk wrote:The following code is working fine with Borland C Compiler via STATIC linking of the DLL. I have added the missing C wrapper definitions.

Code: Select all  Expand view
#include "FiveWin.ch"
function Main()

   local hWebView := WebView_Create()

   WebView_Navigate( hWebView, Html() ) // or use an URL
   
   SysWait( 2 )
   WebView_Bind( hWebView, "SendToFWH", SendToFWHAddress(), hWebView )    
   
   WebView_Eval( hWebView, 'document.getElementById( "user" ).value = "fivetech"' )
   WebView_Eval( hWebView, 'document.getElementById( "passwd" ).value = "1234"' )
   SysWait( 2 )
   WebView_Eval( hWebView, 'document.getElementById( "submit" ).click()' )
   
   WebView_Run( hWebView )
   WebView_Destroy( hWebView )  

return nil

function Html()

   local cHtml

   TEXT INTO cHtml
      data:text/html,
      <html>
         <head>
         </head>
         <body style="background-color:cyan">
            <h2>Using WebView from FWH</h2>
            <form method="post">
               <label for="fname">username:</label>
               <input type="text" id="user" name="username"><br><br>
               <label for="lname">password:</label>
               <input type="text" id="passwd" name="password"><br><br>
               <input type="submit" id="submit" value="Submit" onclick="alert('ok')">
            </form>            
         </body>
      </html>
   ENDTEXT      

return cHtml

#pragma BEGINDUMP

#include <hbapi.h>
#include <windows.h>
#include <hbvm.h>

void * webview_create(int debug, void * window );
void webview_run( void * w );
void webview_navigate( void * w, const char * url );
void webview_destroy( void * w );
void webview_eval( void * w, const char * javascript );
void webview_bind( void * w, const char * name, void * func, void * pvoid );

HB_FUNC( WEBVIEW_CREATE )
{
   hb_retptr( webview_create( 0, NULL ) );
}


HB_FUNC( WEBVIEW_RUN )
{
   webview_run( hb_parptr( 1 ) );
}

HB_FUNC( WEBVIEW_NAVIGATE )
{
   webview_navigate( hb_parptr( 1 ), hb_parc( 2 ) );
}

HB_FUNC( WEBVIEW_DESTROY )
{
   webview_destroy( hb_parptr( 1 ) );
}

HB_FUNC( WEBVIEW_BIND )
{
   webview_bind( hb_parptr( 1 ), hb_parc( 2 ), hb_parptr( 3 ), hb_parptr( 4 ) );
}

HB_FUNC( WEBVIEW_EVAL )
{
   webview_eval( hb_parptr( 1 ), hb_parc( 2 ) );
}

static void SendToFWH( const char * szNumRequests, const char * szJson, void * p )
{
   hb_vmPushSymbol( hb_dynsymGetSymbol( "WEBVIEW_SAVEVALUES" ) );
   hb_vmPushNil();
   hb_vmPushString( szNumRequests, strlen( szNumRequests ) );
   hb_vmPushString( szJson, strlen( szJson ) );
   hb_vmFunction( 2 );
}

HB_FUNC( SENDTOFWHADDRESS )
{
   hb_retnl( ( HB_LONG ) SendToFWH );
}

#pragma ENDDUMP


Imust link any lib ?


Code: Select all  Expand view
Progetto: test3, Ambiente: bcc7xHarbor:
[1]:Harbour.Exe test3.prg  /m /n0 /gc1 /es2 /a /iC:\work\fwh\include /iC:\work\XHARBOUR\Include /jI18n\Main.hil /iinclude;c:\work\fwh\include;C:\work\XHARBOUR\include /oObj\test3.c
xHarbour 1.2.3 Intl. (SimpLex) (Build 20180217)
Copyright 1999-2017, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'test3.prg'...
Generating international list to 'I18n\Main.hil'...
Generating C source output to 'Obj\test3.c'...
Done.
Lines 45, Functions/Procedures 2, pCodes 158
[1]:Bcc32.Exe -M -c -DHB_OS_WIN_32 -DHB_FM_STATISTICS_OFF -DHB_NO_DEFAULT_API_MACROS -DHB_NO_DEFAULT_STACK_MACROS -IC:\work\fwh\include -IC:\work\bcc7\Include\windows\sdk\;C:\work\XHARBOUR\Include  -nObj Obj\test3.c
Embarcadero C++ 7.30 for Win32 Copyright (c) 1993-2017 Embarcadero Technologies, Inc.
Obj\test3.c:
Warning W8057 test3.prg 96: Parameter 'p' is never used in function SendToFWH
[1]:iLink32.Exe -Gn -aa -Tpe -s -v @test3.bcl
Turbo Incremental Link 6.80 Copyright (c) 1997-2017 Embarcadero Technologies, Inc.
Error: Unresolved external '_webview_create' referenced from C:\WORK\ERRORI\WEBVIEW\OBJ\TEST3.OBJ
Error: Unresolved external '_webview_run' referenced from C:\WORK\ERRORI\WEBVIEW\OBJ\TEST3.OBJ
Error: Unresolved external '_webview_navigate' referenced from C:\WORK\ERRORI\WEBVIEW\OBJ\TEST3.OBJ
Error: Unresolved external '_webview_destroy' referenced from C:\WORK\ERRORI\WEBVIEW\OBJ\TEST3.OBJ
Error: Unresolved external '_webview_bind' referenced from C:\WORK\ERRORI\WEBVIEW\OBJ\TEST3.OBJ
Error: Unresolved external '_webview_eval' referenced from C:\WORK\ERRORI\WEBVIEW\OBJ\TEST3.OBJ
Error: Unable to perform link
 

Re: Using WebView with Borland !!!

PostPosted: Tue Feb 15, 2022 10:05 am
by anserkk
Silvio.Falconi wrote: I must link any lib ?

Yes. You have to create Webvew.lib using the impdef and implib process as explained on the first page of this thread.

Regards
Anser

Re: Using WebView with Borland !!!

PostPosted: Tue Feb 15, 2022 3:57 pm
by Antonio Linares
Dear Anser,

great feedback!

many thanks! :-)

Re: Using WebView with Borland !!!

PostPosted: Tue Feb 15, 2022 4:04 pm
by Antonio Linares
Dear Anser,

What Windows version are you using ?

What did you had to install to get it running ?

many thanks

Re: Using WebView with Borland !!!

PostPosted: Wed Feb 16, 2022 5:38 am
by anserkk
Antonio Linares wrote:What Windows version are you using ?

I am using Windows 10 Pro 64 bit

Antonio Linares wrote:What did you had to install to get it running ?

To get it running, I had to install Evergreen Standalone Installer x86 from the website https://developer.microsoft.com/en-us/microsoft-edge/webview2/

Regards
Anser

Re: Using WebView with Borland !!!

PostPosted: Wed Feb 16, 2022 8:42 am
by Silvio.Falconi
ok Win 10 ok
but is there someome tried on windows Seven ?

Re: Using WebView with Borland !!!

PostPosted: Wed Feb 16, 2022 8:59 am
by Antonio Linares
Silvio,

I am having troubles installing Windows 7 on virtualbox, sorry

Re: Using WebView with Borland !!!

PostPosted: Wed Feb 16, 2022 8:59 am
by Antonio Linares

Re: Using WebView with Borland !!!

PostPosted: Wed Feb 16, 2022 10:21 am
by Silvio.Falconi
Antonio Linares wrote:Silvio,

I am having troubles installing Windows 7 on virtualbox, sorry



Antonio,
On Windows Seven make that error I publish

Image

Today I found this

https://docs.microsoft.com/en-us/window ... esscontext

https://quoramarketing.com/fix-teardown ... not-found/

https://stackoverflow.com/questions/682 ... in-windows

https://docs.microsoft.com/en-us/window ... ss-context

I think there is a solution with

Code: Select all  Expand view

#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 3

extern BOOL SetProcessDpiAwarenessContext(int value);

int main()

{

   SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2);

}


But How I can insert it on my exe ?