From: Geoff Schaller on
Thomas.

Another thing to try: remove Classmate from the equation (not that I
think it should be an issue). Just use a regular VO sample with regular
sample and verify it 'can' work. If that won't, send the sample to the
news group and we can try it as well.

We use the ole web browser all the time with XP, Vista, W7, W2003, W2008
R2: 32 or 64 bit varieties of them all. No problem. Must be something
simple.

Geoff



"Thomas Olszewicki" <ThomasO(a)cpas.com> wrote in message
news:48292142-e92e-407d-920a-bd088d373580(a)s7g2000vbk.googlegroups.com:

> On Apr 19, 1:42 pm, Nick Friend <nicktek...(a)googlemail.com> wrote:
>
> > Thomas,
> >
> > I haven't had time to check, but I suspect that both calls are
> > effectively identical underneath.... I use this to start a web
> > browser..
> >
> > IF !oDCWebBrowser:CreateEmbedding("Shell.Explorer")
> > ......
>
>
> Nick,
> Thank you very much for your replay.
> Indeed CreateEmbedding and CreateEmbeddedFromProgID are equivalent
> calls
> CreateEmbedding in VO GUI classes and
> CreateEmbeddedFromProgID in Classmate.
> In the end all we want is to display fully formatted static HTML.
> Do you think there is another way of doing it?
>
> Thank you
> Thomas Olszewicki
> CPAS Systems Inc.

From: Thomas Olszewicki on
On Apr 20, 11:03 pm, "Geoff Schaller"
<geo...(a)softxwareobjectives.com.au> wrote:
> Thomas.
>
> Another thing to try: remove Classmate from the equation (not that I
> think it should be an issue). Just use a regular VO sample with regular
> sample and verify it 'can' work. If that won't, send the sample to the
> news group and we can try it as well.
>
> We use the ole web browser all the time with XP, Vista, W7, W2003, W2008
> R2: 32 or 64 bit varieties of them all. No problem. Must be something
> simple.
>
> Geoff
>
> "Thomas Olszewicki" <Thom...(a)cpas.com> wrote in message
>
> news:48292142-e92e-407d-920a-bd088d373580(a)s7g2000vbk.googlegroups.com:
>
>
>
> > On Apr 19, 1:42 pm, Nick Friend <nicktek...(a)googlemail.com> wrote:
>
> > > Thomas,
>
> > > I haven't had time to check, but I suspect that both calls are
> > > effectively identical underneath.... I use this to start a web
> > > browser..
>
> > > IF !oDCWebBrowser:CreateEmbedding("Shell.Explorer")
> > >     ......
>
> > Nick,
> > Thank you very much for your replay.
> > Indeed CreateEmbedding and CreateEmbeddedFromProgID are equivalent
> > calls
> > CreateEmbedding in VO GUI classes and
> > CreateEmbeddedFromProgID in Classmate.
> > In the end all we want is to display fully formatted static HTML.
> > Do you think there is another way of doing it?
>
> > Thank you
> > Thomas Olszewicki
> > CPAS Systems Inc.- Hide quoted text -
>
> - Show quoted text -

Geoff and Nick,
Thank you very much for your suggestions.
I'll have to try to create a reproducible example.
Thomas.
From: Thomas Olszewicki on
On Apr 19, 10:23 am, Thomas Olszewicki <Thom...(a)cpas.com> wrote:
> Dear VO-ers
> I’m so glad that this group is so active.
> It is so nice to see same group of people, same programs, same tools.
> I guess good things are here to stay…
> I miss programming in VO.
>
> Hope somebody can come up with some clue.
> Quite recently, we’ve run into a small problem with
> one of our “legacy” programs.
>
> One of our clients have decided to move Client portion of the Client-
> Server application to new platform :Windows 7.
>
> Client application is a VO + Classmate.
> It has been recompiled in VO 2.8 and Classmate 209.
>
> Everything works except WebBrowser.
> It has been working in Windows XP without any problems for years.
>
> When user is trying to open a generated HTML document, it opens
> sometimes,
> But 2nd or 3rd  attempt always generates a GPF error.
>
>   06: Line  80 - OLE, Ole Control Events - SETVARIANTREFPARAMS
>   07: Line  79 - OLE, Ole Control Events - COLECONTROLEVENTDISP:INVOKE
>
> This is the code we are using to create a Web Browser object in our
> code.
>
> CLASS OurWebBrowser INHERIT WebBrowser
>
> METHOD Init(oParent) CLASS OurWebBrowser
>         LOCAL oWin AS cWindow
>
>         SUPER:Init(oParent,NIL,NIL,[WebBrowser])
>
>         oWin := oParent
>         …
>         IF .not. self:CreateEmbeddedFromProgID([Shell.Explorer])
>                 OurErrorBox([MS Explorer not installed])
>         ENDIF
>         RETURN SELF
>
> Class WebBrowser is generated from VO–Setup OLE Control : Microsoft
> Web Browser.
>
> Error does happen in the method Navigate2.
>
> We will appreciate any suggestions.
>
> Thank you in advance
>
> Thomas Olszewicki
> CPAS Systems Inc.
Nick and Geoff,
Thank you very much for your help.
Once I've tried VO GUI OLE it was obvious the error was in CM code.

So...Problem solved.
It looks like small error in ClassMate OLE code:
Cm Gui 209.aef > Module: OLE, Ole Control Events > Function:
SetVariantRefParams

Change the code starting in line 78:
////////////////////////////////////
....
case nType==VT_VARIANT
if !(sTempVal3:=CoTaskMemAlloc(_sizeof(_winVARIANT)))==null_ptr

VariantCopy(sTempVal3,@sTempVal1)
pTemp:=sParam.uVariant.byref
ptr(pTemp):=sTempVal3

endif
....
////////////////////////////////////

change it to:
////////////////////////////////////
....
case nType==VT_VARIANT
if !(sTempVal3:=CoTaskMemAlloc(_sizeof(_winVARIANT)))==null_ptr
if MemCheckPtr(sTempVal3,_sizeof(_winVARIANT)) .and.
MemCheckPtr(@sTempVal1,_sizeof(_winVARIANT))

VariantCopy(sTempVal3,@sTempVal1)
pTemp:=sParam.uVariant.byref
ptr(pTemp):=sTempVal3

endif
endif
....
////////////////////////////////////

Hope this may help CM users.

Thomas Olszewicki
CPAS Systems Inc.
From: Thomas Olszewicki on
On Apr 23, 11:07 am, Thomas Olszewicki <Thom...(a)cpas.com> wrote:
> On Apr 19, 10:23 am, Thomas Olszewicki <Thom...(a)cpas.com> wrote:
>
>
>
> > Dear VO-ers
> > I’m so glad that this group is so active.
> > It is so nice to see same group of people, same programs, same tools.
> > I guess good things are here to stay…
> > I miss programming in VO.
>
> > Hope somebody can come up with some clue.
> > Quite recently, we’ve run into a small problem with
> > one of our “legacy” programs.
>
> > One of our clients have decided to move Client portion of the Client-
> > Server application to new platform :Windows 7.
>
> > Client application is a VO + Classmate.
> > It has been recompiled in VO 2.8 and Classmate 209.
>
> > Everything works except WebBrowser.
> > It has been working in Windows XP without any problems for years.
>
> > When user is trying to open a generated HTML document, it opens
> > sometimes,
> > But 2nd or 3rd  attempt always generates a GPF error.
>
> >   06: Line  80 - OLE, Ole Control Events - SETVARIANTREFPARAMS
> >   07: Line  79 - OLE, Ole Control Events - COLECONTROLEVENTDISP:INVOKE
>
> > This is the code we are using to create a Web Browser object in our
> > code.
>
> > CLASS OurWebBrowser INHERIT WebBrowser
>
> > METHOD Init(oParent) CLASS OurWebBrowser
> >         LOCAL oWin AS cWindow
>
> >         SUPER:Init(oParent,NIL,NIL,[WebBrowser])
>
> >         oWin := oParent
> >         …
> >         IF .not. self:CreateEmbeddedFromProgID([Shell.Explorer])
> >                 OurErrorBox([MS Explorer not installed])
> >         ENDIF
> >         RETURN SELF
>
> > Class WebBrowser is generated from VO–Setup OLE Control : Microsoft
> > Web Browser.
>
> > Error does happen in the method Navigate2.
>
> > We will appreciate any suggestions.
>
> > Thank you in advance
>
> > Thomas Olszewicki
> > CPAS Systems Inc.
>
> Nick and Geoff,
> Thank you very much for your help.
> Once I've tried VO GUI OLE it was obvious the error was in CM code.
>
> So...Problem solved.
> It looks like small error in ClassMate OLE code:
> Cm Gui 209.aef > Module: OLE, Ole Control Events > Function:
> SetVariantRefParams
>
> Change the code starting in line 78:
> ////////////////////////////////////
> ...
>  case nType==VT_VARIANT
>   if !(sTempVal3:=CoTaskMemAlloc(_sizeof(_winVARIANT)))==null_ptr
>
>        VariantCopy(sTempVal3,@sTempVal1)
>        pTemp:=sParam.uVariant.byref
>        ptr(pTemp):=sTempVal3
>
>   endif
> ...
> ////////////////////////////////////
>
> change it to:
> ////////////////////////////////////
> ...
>  case nType==VT_VARIANT
>   if !(sTempVal3:=CoTaskMemAlloc(_sizeof(_winVARIANT)))==null_ptr
>     if MemCheckPtr(sTempVal3,_sizeof(_winVARIANT)) .and.
>        MemCheckPtr(@sTempVal1,_sizeof(_winVARIANT))
>
>        VariantCopy(sTempVal3,@sTempVal1)
>        pTemp:=sParam.uVariant.byref
>        ptr(pTemp):=sTempVal3
>
>     endif
>   endif
> ...
> ////////////////////////////////////
>
> Hope this may help CM users.
>
> Thomas Olszewicki
> CPAS Systems Inc.- Hide quoted text -
>
> - Show quoted text -
Sorry for stupid question,
How do I notify Brian about this change?

Thomas
From: Ginny Caughey on
Thanks for this Thomas. I've made a change in my Classmate code even though
I didn't encounter the issue yet. I assume from the additional MemCheckPtr
code that sometimes you're getting back a bad pointer?

--

Ginny Caughey
www.wasteworks.com