Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1916
  • Last Modified:

Access violation ... in module 'MSVBVM60.DLL'

hi,

i'm trying to use an acitveX from delphi. i didn't write this activeX but i know it was writen in vb6.

i registered this activeX with: regsvr32 "C:\Windows\System32\theActiveX.ocx"
i got : DLLRegisterServer in C:\Windows\System32\theActiveX.ocx succeeded

i tried to install it with: regsvr32 /i "C:\Windows\System32\theActiveX.ocx"
i got: C:\Windows\System32\theActiveX.ocx was loaded, but the DLLInstall entry point was not found. this file cannot be registered.

when i try to execute one of it's method i get the following error:
Access violation at address 6AA5137B in module 'MSVBVM60.DLL'. Read of address 00000020

any another method raised this error:
OLE error 800A01A9

i installed the Service Pack 6 for Visual Basic 6.0: Run-Time Redistribution Pack... with no luck.

any ideas??

thanks,
ewilde.
0
ewilde
Asked:
ewilde
  • 2
  • 2
1 Solution
 
justchat_1Commented:
Are you sure the activex works and that errors were not ignored when it was compiled?
0
 
ewildeAuthor Commented:
there is a demo application, written in vb, that uses this activeX, and it works fine.

maybe i should ask this question also in delphi area?
0
 
justchat_1Commented:
I can confirm this a delphi problem with activex's...so posting there would probably give a definitive answer...

I read an old forum on this error that mentioned something about having to modify the Delphi wrapper class to use the IDispatch interface instead of the v-table interface but it didnt give details.
0
 
ewildeAuthor Commented:
i finally found the solution here:

http://www.x64.com/pt/vbdelphi.html.

the principle for the solution was written by justchat_1, so i finalize this question with grade of B.

i copied the solution from there:

> (the code in the comment was generated by delphi which i replaced)

>    ...
>    FIntf: _UserControl1Disp; {_UserControl1;}
>    function  GetControlInterface: _UserControl1Disp; {_UserControl1;}
>    ...
>    property  ControlInterface: _UserControl1Disp {_UserControl1} read
> GetControlInterface;
>    ....

>    procedure TUserControl1.CreateControl;

>          procedure DoCreate;
>          begin
>            FIntf := IUnknown(OleObject) as _UserControl1Disp;
> {_UserControl1;}
>          end;
>    begin
>          if FIntf = nil then DoCreate;
>    end;

>    function TUserControl1.GetControlInterface: _UserControl1Disp;
> {_UserControl1;}
>    begin
>          CreateControl;
>          Result := FIntf;
>    end;


0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now