Skip to main content

We are working with another company to get their product working with ours - and they have written iframes to display their information. 

Is there a way to call those iframes within Visual COBOL.

P.S. We are only on Version 5.0 of the software - we are well aware that we need to upgrade. We just cannot at the moment. 

We are working with another company to get their product working with ours - and they have written iframes to display their information. 

Is there a way to call those iframes within Visual COBOL.

P.S. We are only on Version 5.0 of the software - we are well aware that we need to upgrade. We just cannot at the moment. 

Hi Amy,

One method that you can use to display a browser within a Windows Form is to use the NuGet package CefSharp. It looks a bit complex to be able to read the response back from a web request but it is possible. 

I got it to display the browser using the following code with Visual COBOL 9.0 so I am not sure it will work with 5.0.

      $set ilusing"CefSharp"
      $set ilusing"CefSharp.WinForms"
      $set ilusing"CefSharp.Handler"
       class-id testCefSharp.Form1 is partial
                 inherits type System.Windows.Forms.Form.

       working-storage section.
       01 chromeBrowser type ChromiumWebBrowser.
       method-id NEW.
       procedure division.
           invoke self::InitializeComponent
           invoke InitializeChromium.

           goback.
       end method.

       method-id InitializeChromium.
       procedure division.
           declare settings as type CefSettings = new CefSettings
           set settings::RootCachePath = "C:\\\\temp"
           invoke settings::CefCommandLineArgs::Add("log-severity", "fatal")
           invoke type Cef::Initialize(settings)
           set chromeBrowser = new type ChromiumWebBrowser("http://ourcodeworld.com")
           invoke self::Controls::Add(chromeBrowser)
           set chromeBrowser::Dock to type DockStyle::Fill.
           
           
       end method.

       method-id Form1_FormClosing final private.
       procedure division using by value sender as object e as type System.Windows.Forms.FormClosingEventArgs.
           invoke type Cef::Shutdown
       end method.
        

       end class.


Hi Amy,

One method that you can use to display a browser within a Windows Form is to use the NuGet package CefSharp. It looks a bit complex to be able to read the response back from a web request but it is possible. 

I got it to display the browser using the following code with Visual COBOL 9.0 so I am not sure it will work with 5.0.

      $set ilusing"CefSharp"
      $set ilusing"CefSharp.WinForms"
      $set ilusing"CefSharp.Handler"
       class-id testCefSharp.Form1 is partial
                 inherits type System.Windows.Forms.Form.

       working-storage section.
       01 chromeBrowser type ChromiumWebBrowser.
       method-id NEW.
       procedure division.
           invoke self::InitializeComponent
           invoke InitializeChromium.

           goback.
       end method.

       method-id InitializeChromium.
       procedure division.
           declare settings as type CefSettings = new CefSettings
           set settings::RootCachePath = "C:\\\\temp"
           invoke settings::CefCommandLineArgs::Add("log-severity", "fatal")
           invoke type Cef::Initialize(settings)
           set chromeBrowser = new type ChromiumWebBrowser("http://ourcodeworld.com")
           invoke self::Controls::Add(chromeBrowser)
           set chromeBrowser::Dock to type DockStyle::Fill.
           
           
       end method.

       method-id Form1_FormClosing final private.
       procedure division using by value sender as object e as type System.Windows.Forms.FormClosingEventArgs.
           invoke type Cef::Shutdown
       end method.
        

       end class.

Well - this did not work with 5.0 and Visual Studio 2017.

When I try to get the NuGet Package - I get this error message: 

The 'chromiumembeddedframework.runtime.win-x64 126.2.7' package requires NuGet client version '5.0.0' or above, but the current NuGet version is '4.9.3'. To upgrade NuGet, please go to docs.nuget.org/.../installing-nuget

My NuGet is updated to the most recent level for Visual Studio 2017.  

Do you have any other ideas, or am I going to have to upgrade to 9.0?


Well - this did not work with 5.0 and Visual Studio 2017.

When I try to get the NuGet Package - I get this error message: 

The 'chromiumembeddedframework.runtime.win-x64 126.2.7' package requires NuGet client version '5.0.0' or above, but the current NuGet version is '4.9.3'. To upgrade NuGet, please go to docs.nuget.org/.../installing-nuget

My NuGet is updated to the most recent level for Visual Studio 2017.  

Do you have any other ideas, or am I going to have to upgrade to 9.0?

Hi Amy,

Sorry, but I have no other ideas at the moment. Both VS2017 and VC 5.0 are no longer supported. I would highly recommend that you upgrade to VC 9.0 and VS2022 anyways so that you are back on a supported platform.


Well - this did not work with 5.0 and Visual Studio 2017.

When I try to get the NuGet Package - I get this error message: 

The 'chromiumembeddedframework.runtime.win-x64 126.2.7' package requires NuGet client version '5.0.0' or above, but the current NuGet version is '4.9.3'. To upgrade NuGet, please go to docs.nuget.org/.../installing-nuget

My NuGet is updated to the most recent level for Visual Studio 2017.  

Do you have any other ideas, or am I going to have to upgrade to 9.0?

AmyM1  Winforms have a WebBrowser control. Could you try using that? 

I created a simple Winform, added a WebBrowser control to it and added this to the Load event to show how you might be able to include an iframe.

method-id Form1_Load final private.
procedure division using by value sender as object e as type System.EventArgs.
declare webPage as string =
"<html>" &
"<body>" &
" <iframe" &
" src='https://www.amazon.com' frameborder='0' height='100%' width='100%'>" &
" </iframe>" &
"</body>" &
"<html>"
set webBrowser1::DocumentText to webPage
set webBrowser1::ScriptErrorsSuppressed to true
end method.