429 ActiveX error when running a VB6 app that calls a .Net (2.0 framework) dll from a Table PC running WinXP Pro SP2 Tablet PC edition

When I try to access a method from a com enabled .Net app from a VB6 program.  I get Error 429 ActiveX component can't create object.  This only occurs on a Table PC running WinXP Pro Table PC edition SP2.

I tried to isolate the problem by making the simplest program possible so I create VS2005 VB project that has one method.  Here is the code I used:

<ComClass()> Public Class InteropTest
    Public Function ShowDialog() As Boolean
        MsgBox("Hello from .Net 2.0!")
    End Function
End Class

I built the project and then created a VB6 standard EXE with a command button on the form and a reference set to the .Net dll.  Here is the code for the VB6 project:

Private Sub Command1_Click()
    Dim st As SimpleTest.InteropTest
    Set st = New SimpleTest.InteropTest
End Sub

That's as simple as it gets, right?

I then used Installshield to create the installation (I don't know how to get the tlb file registered properly without using Installshield).  I tested this on several non-tablet pcs and the program works as expected.  I click the button and I get a message box that says 'Hello from .Net 2.0!'

If I run this from the Table PC, I get the 429 error.

Any help would be greatly appreciated
Who is Participating?
Since the question you are asking is related to installers, then it would be the best to have one in section specific to installers and in section for Tablet PC's (you can have one question in 3 sections.

Well, in windows environment, a com dll needs to be either registered or loaded into memory. I don't know how this works on Tablet PC, but i Believe that you need first to load it in memory in order to use it.

I concur with Priest04...

I believe you're thinking too hard... you should just concentrate on registering the COM DLL on the Tablet PC
Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

DalexSupportAuthor Commented:
I agree this is a registration issue.  What I don't understand is why the .Net dll won't register on the Tablet PC edition of XP Pro but it registers without fail on every notebook and desktop pc.  

How do I register a .Net dll?  I need to register the tlb file but regsvr32 doesn't work with tlb files.  If I try regsvr32 on the .Net dll, I get a message that the file can't be registered because no entry point could be found.  

I explored the registry of the tablet pc and a pc that registered properly and found the entries that the tablet pc did not have.  I exported the registry entries from the pc that did register properly and imported those entries into the tablet pc and then the VB6 app communicated correctly with the .Net dll.  

Could this be an Installshield issue?  Is the registration process for dlls different on a tablet pc?

I can get by with importing the registry entries, but it seems to me there should be an easier solution.
What those registry keys refer to? Are they specific to registering this dll? When you receive the entry point not found error, does at that moment application start to work (cause I believe that it stills load it in memory, so maybe then it becomes available to your vb6 app). I am sorry, but I never worked with tablet PC, so I cant tell you how this OS works. The error 429 means that this dll is not loaded in memory, so you cant use it. Where do you put this dll on target OS. Try changing it to system32 (if it exists, as I said, not familiar with Tablet PC OS)

DalexSupportAuthor Commented:
The registry keys are specific to the .Net dll.  When I recieve the entry point not found error, the application still does NOT work.  

For some reason, on non-tablet pcs, these registry entries are created with the installation.  On the table pcs, thery are not created.  I am starting to believe this may be an Installshield issue where Installshield isn't registering properly, but since I don't have a tablet pc of my own to use to test this, I am limited as to what I can do to test this.  (I have a customer with one that I hook up with on NetMeeting when his pc is available which is why my responses are not very fast).  

I put all files including the dll in the same folder as the exe file that calls it (Call_dotNetFromVB6.exe).  I have even created a Call_dotNetFromVB6.exe.local file to try to circumvent 'dll hell' issues hoping that may resolve the problem but that hasn't worked either.

I haven't had access to the table pc to test putting the dll in system32 since your last post so I haven't tested that yet but I don't have much faith that that will matter.  

Since I can manually register this by adding branches to the registry, I am more and more thinking this is an Installshield issue with registering dlls (the dlls after all do register on non-tablet pc editions of WinXP).  I haven't used EE very much so I don't know all the proper procedures.  Should I post another question and associate this with an Installshield zone issue?

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.

All Courses

From novice to tech pro — start learning today.