Discussion:
VB3/4 control problem
(too old to reply)
Tym
2006-05-23 19:19:30 UTC
Permalink
I have been tasked with re-developing an old VB3 app. I have vb4,6 and
2005.net

I do not have the original source code (long story) but have got a
decompiler which has created the necessary source files.

Problem 1 - the .frm files are binary. VB6 can't read them - but
vb4(16 bit) can. The idea is to get vb4 to create "proper" forms I can
then load into vb6 - don't know if this will work. If not - I'll have
to develope it in VB4 (sigh)

The program uses an old 2.? DAO to access an access 2 .mdb database so
I am reluctant to migrate this to ADO.NET - thinking of leaving it
with DAO on vb6 - its what I know best!

Problem 2 - the forms appear to have custom controls on them
VBX.SSFrame and the like. This is preventing the forms from loading
properly. IS ther a way I can recreate these, or download something
similar from somewhere and rename them???

I've obtained a copy of sswin.dll, but can't register it. Probably the
fact the regsvr32 can register 16 bit dlls??? DOn't know if that's
realted to the VBX.ss??? controls....?

Is there a way round this as I don't like to let customers down.

Tym

~There's no place like 127.0.0.1~
Paul Clement
2006-05-23 19:46:39 UTC
Permalink
On Tue, 23 May 2006 20:19:30 +0100, Tym <***@ictis.net> wrote:

¤ I have been tasked with re-developing an old VB3 app. I have vb4,6 and
¤ 2005.net
¤
¤ I do not have the original source code (long story) but have got a
¤ decompiler which has created the necessary source files.
¤
¤ Problem 1 - the .frm files are binary. VB6 can't read them - but
¤ vb4(16 bit) can. The idea is to get vb4 to create "proper" forms I can
¤ then load into vb6 - don't know if this will work. If not - I'll have
¤ to develope it in VB4 (sigh)
¤
¤ The program uses an old 2.? DAO to access an access 2 .mdb database so
¤ I am reluctant to migrate this to ADO.NET - thinking of leaving it
¤ with DAO on vb6 - its what I know best!
¤
¤ Problem 2 - the forms appear to have custom controls on them
¤ VBX.SSFrame and the like. This is preventing the forms from loading
¤ properly. IS ther a way I can recreate these, or download something
¤ similar from somewhere and rename them???
¤
¤ I've obtained a copy of sswin.dll, but can't register it. Probably the
¤ fact the regsvr32 can register 16 bit dlls??? DOn't know if that's
¤ realted to the VBX.ss??? controls....?
¤
¤ Is there a way round this as I don't like to let customers down.

Unfortunately the original VBX files will be required, however they are not COM controls and do not
need to be registered.

It may be possible to replace their functionality with built-in controls (or third-party controls)
if you can identify what they do.

You may want to post a list of the files being used by the project.


Paul
~~~~
Microsoft MVP (Visual Basic)
Tym
2006-05-23 20:04:35 UTC
Permalink
On Tue, 23 May 2006 14:46:39 -0500, Paul Clement
Post by Paul Clement
Unfortunately the original VBX files will be required, however they are not COM controls and do not
need to be registered.
It may be possible to replace their functionality with built-in controls (or third-party controls)
if you can identify what they do.
You may want to post a list of the files being used by the project.
Hmm...

When I open the MAK file, in vb4, I am asked to upgrade the following
custom controls in the project to their newer versions:
CMDIALOG.VBX
CRYSTAL.VBX
MSCOMM.VBX
MSMASKED.VBX
THREED.VBX

The only one of these I have from the original archive is MSCOMM.VBX.
I have sourced the others though... not sure which directory to put
them in though - windows\system seems logical to me.

Then I get

"License fil for custom control not found..." for MSCOMM, Masked edit,
Sheridan 3-D Widgets/1.

When asked If I want to save the forms as VB4 I click OK FOR ALL

Then I get "Custom control 'VBX.SSFrame' not found"

etc etc...

However......

If I start a NEW project and add the controls I can design with
them... Odd...

I'm trying to start a blank projet and add the forms in manually, but
the VBX.SSxxxxx is still causing a problem.

Is this to do with the controls or sswin.dll?


Tym

~There's no place like 127.0.0.1~
Karl E. Peterson
2006-05-23 21:32:29 UTC
Permalink
Post by Tym
Post by Paul Clement
You may want to post a list of the files being used by the project.
Hmm...
When I open the MAK file, in vb4, I am asked to upgrade
That's the beauty of VB4, yeah.
Post by Tym
the following
CMDIALOG.VBX
ComDlg16.ocx and/or ComDlg32.ocx
Post by Tym
CRYSTAL.VBX
crystl16.ocx and/or crystl32.ocx
Post by Tym
MSCOMM.VBX
mscomm16.ocx and/or mscomm32.ocx
Post by Tym
MSMASKED.VBX
msmask16.ocx and/or msmask32.ocx
Post by Tym
THREED.VBX
ThreeD.ocx and/or ThreeD32.ocx

Are we seeing a pattern here? <g> All of these shipped with VB4. I just
dug those names out of the VB4SETUP.INF file.
Post by Tym
The only one of these I have from the original archive is MSCOMM.VBX.
I have sourced the others though... not sure which directory to put
them in though - windows\system seems logical to me.
Yeah, put the 16-bit ones there, and the 32-bit ones in \system32
Post by Tym
Then I get
"License fil for custom control not found..." for MSCOMM, Masked edit,
Sheridan 3-D Widgets/1.
http://www.google.com/search?q=%22License+file+for+custom+control+not+found%22
--
Working without a .NET?
http://classicvb.org/
Tym
2006-05-24 06:10:55 UTC
Permalink
Post by Karl E. Peterson
Post by Tym
Then I get
"License fil for custom control not found..." for MSCOMM, Masked edit,
Sheridan 3-D Widgets/1.
http://www.google.com/search?q=%22License+file+for+custom+control+not+found%22
But as I said, if i manually add these controls to a new project I can
design with them, but STILL get the VBX.ssxxxx error messages.


I've use DoDi's decompiler - is ter a better one which will create the
forms in "proper" mode and not binary??

Tym

~There's no place like 127.0.0.1~
Paul Clement
2006-05-24 12:29:31 UTC
Permalink
On Tue, 23 May 2006 21:04:35 +0100, Tym <***@ictis.net> wrote:

¤ On Tue, 23 May 2006 14:46:39 -0500, Paul Clement
¤ <***@swspectrum.com> wrote:
¤
¤ >
¤ >Unfortunately the original VBX files will be required, however they are not COM controls and do not
¤ >need to be registered.
¤ >
¤ >It may be possible to replace their functionality with built-in controls (or third-party controls)
¤ >if you can identify what they do.
¤ >
¤ >You may want to post a list of the files being used by the project.
¤
¤ Hmm...
¤
¤ When I open the MAK file, in vb4, I am asked to upgrade the following
¤ custom controls in the project to their newer versions:
¤ CMDIALOG.VBX
¤ CRYSTAL.VBX
¤ MSCOMM.VBX
¤ MSMASKED.VBX
¤ THREED.VBX
¤
¤ The only one of these I have from the original archive is MSCOMM.VBX.
¤ I have sourced the others though... not sure which directory to put
¤ them in though - windows\system seems logical to me.
¤
¤ Then I get
¤
¤ "License fil for custom control not found..." for MSCOMM, Masked edit,
¤ Sheridan 3-D Widgets/1.
¤
¤ When asked If I want to save the forms as VB4 I click OK FOR ALL
¤
¤ Then I get "Custom control 'VBX.SSFrame' not found"
¤
¤ etc etc...
¤
¤ However......
¤
¤ If I start a NEW project and add the controls I can design with
¤ them... Odd...
¤
¤ I'm trying to start a blank projet and add the forms in manually, but
¤ the VBX.SSxxxxx is still causing a problem.
¤
¤ Is this to do with the controls or sswin.dll?


See if the following helps:

http://support.microsoft.com/default.aspx?scid=kb;en-us;177799
http://www.gridlinx.com/vb3.htm
http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B138531


Paul
~~~~
Microsoft MVP (Visual Basic)
Tym
2006-05-24 16:03:23 UTC
Permalink
On Wed, 24 May 2006 07:29:31 -0500, Paul Clement
Post by Paul Clement
http://support.microsoft.com/default.aspx?scid=kb;en-us;177799
Thanks, but this is for vb5 and 6
Post by Paul Clement
http://www.gridlinx.com/vb3.htm
Again, is the comment about having the OCX files. Will it be good
enough to obtain the ones that are installed with the applicaiton??

It also says I need the forms in text not binary...
Post by Paul Clement
http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B138531
I *do* get asked to convert, and I accept but then it fails on
VBX.SS???? missing...

However... Using Dodi I have found that these controls it referes to
are part of threed.vbx. I think I need to spend some more time getting
this to "register" properly as it were


Tym

~There's no place like 127.0.0.1~
Paul Clement
2006-05-24 16:19:00 UTC
Permalink
On Wed, 24 May 2006 17:03:23 +0100, Tym <***@ictis.net> wrote:

¤ On Wed, 24 May 2006 07:29:31 -0500, Paul Clement
¤ <***@swspectrum.com> wrote:
¤
¤ >http://support.microsoft.com/default.aspx?scid=kb;en-us;177799
¤
¤ Thanks, but this is for vb5 and 6
¤

Did you actually try the following:

http://support.microsoft.com/kb/195353/EN-US/

¤ It also says I need the forms in text not binary...

Weren't you able to save them as text?


Paul
~~~~
Microsoft MVP (Visual Basic)
Tym
2006-05-24 21:15:46 UTC
Permalink
On Wed, 24 May 2006 11:19:00 -0500, Paul Clement
Post by Paul Clement
http://support.microsoft.com/kb/195353/EN-US/
~cough~ Ahem.. erm.. sorry - missed that one. Been hell on today -
power off for most of the day.. trying to do things in a hurry while I
could! - Have downloaded it and will try it in the next day or two
Post by Paul Clement
¤ It also says I need the forms in text not binary...
Weren't you able to save them as text?
Maybe PEBKAC. My decompiler (DoDi) fires up VB4 but there's a problem
becuase of the OCX/VBX files. Doesn't save them as text - saves as
binary - once I get round the VBX problem I'm quite sure it will
resolve.

I've setting up a 16bit machine to put this all on so there's no 32bit
contamination


Is it still possible to get a copt of vb3? I'll try my MSDN
subscription!!

Tym

~There's no place like 127.0.0.1~
Paul Clement
2006-05-25 12:18:53 UTC
Permalink
On Wed, 24 May 2006 22:15:46 +0100, Tym <***@ictis.net> wrote:


¤
¤ I've setting up a 16bit machine to put this all on so there's no 32bit
¤ contamination
¤
¤
¤ Is it still possible to get a copt of vb3? I'll try my MSDN
¤ subscription!!

Yes, the MSDN goes back to version 2.0.


Paul
~~~~
Microsoft MVP (Visual Basic)
Tym
2006-05-25 14:40:52 UTC
Permalink
On Thu, 25 May 2006 07:18:53 -0500, Paul Clement
Post by Paul Clement
¤ Is it still possible to get a copt of vb3? I'll try my MSDN
¤ subscription!!
Yes, the MSDN goes back to version 2.0.
That worked wonders and I can now get into the source code generated
by Dodi's decompiler

Thanks for your pointers!

I have a data question that google can't answer...

3043 Could not create VBA expression service. System (DAO)

What on earth is a VBA expression service!

This occurs when executing the line

Set gv1326 = OpenDatabase(gv0B1E + "xyz.mdb")

It uses DAO 2.5....

I can find the translation of a portugese thus

"This must before be defined the DataSource, voce anger where be
indicated where its data base, for then defining the RecordSource"


Tym

~There's no place like 127.0.0.1~
Paul Clement
2006-05-25 16:52:05 UTC
Permalink
On Thu, 25 May 2006 15:40:52 +0100, Tym <***@ictis.net> wrote:

¤ On Thu, 25 May 2006 07:18:53 -0500, Paul Clement
¤ <***@swspectrum.com> wrote:
¤
¤ >¤ Is it still possible to get a copt of vb3? I'll try my MSDN
¤ >¤ subscription!!
¤ >
¤ >Yes, the MSDN goes back to version 2.0.
¤
¤
¤ That worked wonders and I can now get into the source code generated
¤ by Dodi's decompiler
¤
¤ Thanks for your pointers!
¤
¤ I have a data question that google can't answer...
¤
¤ 3043 Could not create VBA expression service. System (DAO)
¤
¤ What on earth is a VBA expression service!
¤
¤ This occurs when executing the line
¤
¤ Set gv1326 = OpenDatabase(gv0B1E + "xyz.mdb")
¤
¤ It uses DAO 2.5....
¤

Assuming gv0B1E is a string variable try changing the arithmetic operator to a string concatenation
operator:

Set gv1326 = OpenDatabase(gv0B1E & "xyz.mdb")

I'm also assuming that gv1326 is defined as a DAO.Database object.


Paul
~~~~
Microsoft MVP (Visual Basic)
Rick Rothstein
2006-05-25 17:42:55 UTC
Permalink
€ What on earth is a VBA expression service!
Searching Google using "vba expression service" yeilded this...

http://office.microsoft.com/en-us/assistance/HP010322311033.aspx

and using "visual basic" along with "expression service" yielded these...

http://www.google.com/search?sourceid=navclient&ie=UTF-8&rls=GGLG,GGLG:2006-12,GGLG:en&q=%22visual+basic%22+%22expression+service%22

Rick
Tym
2006-05-25 21:04:56 UTC
Permalink
On Thu, 25 May 2006 11:52:05 -0500, Paul Clement
Post by Paul Clement
Set gv1326 = OpenDatabase(gv0B1E & "xyz.mdb")
Funny how the obvious slips you by isn't it

This seems to have made a difference - will keep you posted
Tym

~There's no place like 127.0.0.1~
Tym
2006-05-26 01:21:26 UTC
Permalink
Post by Tym
On Thu, 25 May 2006 11:52:05 -0500, Paul Clement
Post by Paul Clement
Set gv1326 = OpenDatabase(gv0B1E & "xyz.mdb")
Funny how the obvious slips you by isn't it
This seems to have made a difference - will keep you posted
OK - here we go again....

Got one version of the program working fin in the IDE in VB6. Looks
very 16bit but, there you go!


Newer version invludes the following:

Declare Function extfn02BD Lib "sspvbas1.dll" Alias "RNBOsproActivate"
() As Integer
Declare Function extfn02A8 Lib "sspvbas1.dll" Alias
"RNBOsproDecrement" () As Integer
Declare Function extfn026A Lib "sspvbas1.dll" Alias
"RNBOsproExtendedRead" () As Integer
Declare Function extfn0229 Lib "sspvbas1.dll" Alias
"RNBOsproFindFirstUnit" (p1 As Variant, ByVal p2%) As Integer
Declare Function extfn0242 Lib "sspvbas1.dll" Alias
"RNBOsproFindNextUnit" () As Integer
Declare Function extfn01F6 Lib "sspvbas1.dll" Alias
"RNBOsproGetExtendedStatus" () As Integer
Declare Function extfn0213 Lib "sspvbas1.dll" Alias
"RNBOsproGetVersion" () As Integer
Declare Function extfn01E0 Lib "sspvbas1.dll" Alias
"RNBOsproInitialize" (p1 As Variant) As Integer
Declare Function extfn0293 Lib "sspvbas1.dll" Alias
"RNBOsproOverwrite" () As Integer
Declare Function extfn02D1 Lib "sspvbas1.dll" Alias "RNBOsproQuery"
(p1 As Variant, ByVal p2%, p3$, p4$, p5&, ByVal p6%) As Integer
Declare Function extfn025A Lib "sspvbas1.dll" Alias "RNBOsproRead" ()
As Integer
Declare Function extfn0282 Lib "sspvbas1.dll" Alias "RNBOsproWrite" ()
As Integer


WHeneer any of these "functions" are called, I get the error message
"Runtime Error 48: File not found: sspvbas1.dll"

I've put a copy of it in the c:\windows\system dir and it astll can't
find it - it wont let me add it as a reference either.... what's going
on?

I think i t may be to do with the fact that the parapeter it is
passing is empty:

Declare Function extfn01E0 Lib "sspvbas1.dll" Alias
"RNBOsproInitialize" (p1 As Variant) As Integer

Would that affect it?

Tym

~There's no place like 127.0.0.1~
Tym
2006-05-26 01:23:30 UTC
Permalink
Post by Tym
WHeneer any of these "functions" are called, I get the error message
"Runtime Error 48: File not found: sspvbas1.dll"
I've put a copy of it in the c:\windows\system dir and it astll can't
find it - it wont let me add it as a reference either.... what's going
on?
I think i t may be to do with the fact that the parapeter it is
Declare Function extfn01E0 Lib "sspvbas1.dll" Alias
"RNBOsproInitialize" (p1 As Variant) As Integer
Would that affect it?
Apologies for the typos - its way too late to be posting!
Tym

~There's no place like 127.0.0.1~
Ralph
2006-05-26 03:06:30 UTC
Permalink
Post by Tym
Post by Tym
On Thu, 25 May 2006 11:52:05 -0500, Paul Clement
Post by Paul Clement
Set gv1326 = OpenDatabase(gv0B1E & "xyz.mdb")
Funny how the obvious slips you by isn't it
This seems to have made a difference - will keep you posted
OK - here we go again....
Got one version of the program working fin in the IDE in VB6. Looks
very 16bit but, there you go!
Declare Function extfn02BD Lib "sspvbas1.dll" Alias "RNBOsproActivate"
() As Integer
Declare Function extfn02A8 Lib "sspvbas1.dll" Alias
"RNBOsproDecrement" () As Integer
Declare Function extfn026A Lib "sspvbas1.dll" Alias
"RNBOsproExtendedRead" () As Integer
Declare Function extfn0229 Lib "sspvbas1.dll" Alias
"RNBOsproFindFirstUnit" (p1 As Variant, ByVal p2%) As Integer
Declare Function extfn0242 Lib "sspvbas1.dll" Alias
"RNBOsproFindNextUnit" () As Integer
Declare Function extfn01F6 Lib "sspvbas1.dll" Alias
"RNBOsproGetExtendedStatus" () As Integer
Declare Function extfn0213 Lib "sspvbas1.dll" Alias
"RNBOsproGetVersion" () As Integer
Declare Function extfn01E0 Lib "sspvbas1.dll" Alias
"RNBOsproInitialize" (p1 As Variant) As Integer
Declare Function extfn0293 Lib "sspvbas1.dll" Alias
"RNBOsproOverwrite" () As Integer
Declare Function extfn02D1 Lib "sspvbas1.dll" Alias "RNBOsproQuery"
(p1 As Variant, ByVal p2%, p3$, p4$, p5&, ByVal p6%) As Integer
Declare Function extfn025A Lib "sspvbas1.dll" Alias "RNBOsproRead" ()
As Integer
Declare Function extfn0282 Lib "sspvbas1.dll" Alias "RNBOsproWrite" ()
As Integer
WHeneer any of these "functions" are called, I get the error message
"Runtime Error 48: File not found: sspvbas1.dll"
I've put a copy of it in the c:\windows\system dir and it astll can't
find it - it wont let me add it as a reference either.... what's going
on?
I think i t may be to do with the fact that the parapeter it is
Declare Function extfn01E0 Lib "sspvbas1.dll" Alias
"RNBOsproInitialize" (p1 As Variant) As Integer
Would that affect it?
Tym
~There's no place like 127.0.0.1~
If it is accessed thru a "Declare" directive it means it is a regular
'WinAPI' dll, thus would not be registered as an ActiveX dll would be.

The error doesn't indicate anything is wrong with the signature, it appears
the app can't find it. Try providing a fullpath for the dll in the declare
statement. Locating it in the app folder, or in the System32 folder.

-ralph
Tym
2006-05-26 08:23:14 UTC
Permalink
On Thu, 25 May 2006 22:06:30 -0500, "Ralph"
Post by Ralph
The error doesn't indicate anything is wrong with the signature, it appears
the app can't find it. Try providing a fullpath for the dll in the declare
statement. Locating it in the app folder, or in the System32 folder.
It *can* find it. I think the problem is the parameter being passed.
I've re-visited the code and "corrected" something I'd inadvertantly
muffed up


Declare Function extfn01E0 Lib "c:\windows\system\Sspvbas1.dll" Alias
"RNBOsproInitialize" (p1 As Variant) As Integer



Type T73CE
M73DB As String * 630
End Type

Global gv06C0 As T73CE
^^^^^ I'd originally changed this to variant
(String doesn't work either!)

I've never used custom types before, so I'm not too sure how to track
this bug.


l00AE% = extfn01E0%(gv06C0)


I'd changed it to variant because of the Declare line.

As it stands, I get "Compile Error: Only user-defined type defined in
public object modules can be coerced or form a variant or late-bound
functions"

Googling the error message talks about class mdules which I've never
used before so don't understand what's going on :-(
Tym

~There's no place like 127.0.0.1~
Paul Clement
2006-05-26 12:07:13 UTC
Permalink
On Fri, 26 May 2006 09:23:14 +0100, Tym <***@ictis.net> wrote:

¤ On Thu, 25 May 2006 22:06:30 -0500, "Ralph"
¤ <***@yahoo.com> wrote:
¤
¤ >The error doesn't indicate anything is wrong with the signature, it appears
¤ >the app can't find it. Try providing a fullpath for the dll in the declare
¤ >statement. Locating it in the app folder, or in the System32 folder.
¤
¤
¤ It *can* find it. I think the problem is the parameter being passed.
¤ I've re-visited the code and "corrected" something I'd inadvertantly
¤ muffed up
¤
¤
¤ Declare Function extfn01E0 Lib "c:\windows\system\Sspvbas1.dll" Alias
¤ "RNBOsproInitialize" (p1 As Variant) As Integer
¤
¤
¤
¤ Type T73CE
¤ M73DB As String * 630
¤ End Type
¤
¤ Global gv06C0 As T73CE
¤ ^^^^^ I'd originally changed this to variant
¤ (String doesn't work either!)
¤
¤ I've never used custom types before, so I'm not too sure how to track
¤ this bug.
¤
¤
¤ l00AE% = extfn01E0%(gv06C0)
¤
¤
¤ I'd changed it to variant because of the Declare line.
¤
¤ As it stands, I get "Compile Error: Only user-defined type defined in
¤ public object modules can be coerced or form a variant or late-bound
¤ functions"

Do you have any doc on what sort of parameters this function accepts. I
sincerely doubt that Variant is what you need.

Paul
~~~~
Microsoft MVP (Visual Basic)
Paul Clement
2006-05-26 12:02:54 UTC
Permalink
On Fri, 26 May 2006 02:21:26 +0100, Tym <***@ictis.net> wrote:

¤ On Thu, 25 May 2006 22:04:56 +0100, Tym <***@ictis.net> wrote:
¤
¤ >On Thu, 25 May 2006 11:52:05 -0500, Paul Clement
¤ ><***@swspectrum.com> wrote:
¤ >
¤ >>Set gv1326 = OpenDatabase(gv0B1E & "xyz.mdb")
¤ >
¤ >Funny how the obvious slips you by isn't it
¤ >
¤ >This seems to have made a difference - will keep you posted
¤
¤
¤ OK - here we go again....
¤
¤ Got one version of the program working fin in the IDE in VB6. Looks
¤ very 16bit but, there you go!
¤
¤
¤ Newer version invludes the following:
¤
¤ Declare Function extfn02BD Lib "sspvbas1.dll" Alias "RNBOsproActivate"
¤ () As Integer
¤ Declare Function extfn02A8 Lib "sspvbas1.dll" Alias
¤ "RNBOsproDecrement" () As Integer
¤ Declare Function extfn026A Lib "sspvbas1.dll" Alias
¤ "RNBOsproExtendedRead" () As Integer
¤ Declare Function extfn0229 Lib "sspvbas1.dll" Alias
¤ "RNBOsproFindFirstUnit" (p1 As Variant, ByVal p2%) As Integer
¤ Declare Function extfn0242 Lib "sspvbas1.dll" Alias
¤ "RNBOsproFindNextUnit" () As Integer
¤ Declare Function extfn01F6 Lib "sspvbas1.dll" Alias
¤ "RNBOsproGetExtendedStatus" () As Integer
¤ Declare Function extfn0213 Lib "sspvbas1.dll" Alias
¤ "RNBOsproGetVersion" () As Integer
¤ Declare Function extfn01E0 Lib "sspvbas1.dll" Alias
¤ "RNBOsproInitialize" (p1 As Variant) As Integer
¤ Declare Function extfn0293 Lib "sspvbas1.dll" Alias
¤ "RNBOsproOverwrite" () As Integer
¤ Declare Function extfn02D1 Lib "sspvbas1.dll" Alias "RNBOsproQuery"
¤ (p1 As Variant, ByVal p2%, p3$, p4$, p5&, ByVal p6%) As Integer
¤ Declare Function extfn025A Lib "sspvbas1.dll" Alias "RNBOsproRead" ()
¤ As Integer
¤ Declare Function extfn0282 Lib "sspvbas1.dll" Alias "RNBOsproWrite" ()
¤ As Integer
¤
¤
¤ WHeneer any of these "functions" are called, I get the error message
¤ "Runtime Error 48: File not found: sspvbas1.dll"
¤
¤ I've put a copy of it in the c:\windows\system dir and it astll can't
¤ find it - it wont let me add it as a reference either.... what's going
¤ on?
¤

I was going to suggest placing it in the System32 directory instead.

Paul
~~~~
Microsoft MVP (Visual Basic)
Steve Barnett
2006-05-26 12:18:27 UTC
Permalink
I may be completely wrong with this comment but, if DLL this came with the
VB3 program, it's probably a 16-bit dll... I wouldn't have thought that
worked in VB6 which is 32-bit no matter how you specify the declare.

Also, it might not be this dll that it can't find, but one of it's dependant
DLL's. Have you tried running depends against it and checking that the
dependant dll's are present?

Steve
Post by Tym
Post by Tym
On Thu, 25 May 2006 11:52:05 -0500, Paul Clement
Post by Paul Clement
Set gv1326 = OpenDatabase(gv0B1E & "xyz.mdb")
Funny how the obvious slips you by isn't it
This seems to have made a difference - will keep you posted
OK - here we go again....
Got one version of the program working fin in the IDE in VB6. Looks
very 16bit but, there you go!
Declare Function extfn02BD Lib "sspvbas1.dll" Alias "RNBOsproActivate"
() As Integer
Declare Function extfn02A8 Lib "sspvbas1.dll" Alias
"RNBOsproDecrement" () As Integer
Declare Function extfn026A Lib "sspvbas1.dll" Alias
"RNBOsproExtendedRead" () As Integer
Declare Function extfn0229 Lib "sspvbas1.dll" Alias
"RNBOsproFindFirstUnit" (p1 As Variant, ByVal p2%) As Integer
Declare Function extfn0242 Lib "sspvbas1.dll" Alias
"RNBOsproFindNextUnit" () As Integer
Declare Function extfn01F6 Lib "sspvbas1.dll" Alias
"RNBOsproGetExtendedStatus" () As Integer
Declare Function extfn0213 Lib "sspvbas1.dll" Alias
"RNBOsproGetVersion" () As Integer
Declare Function extfn01E0 Lib "sspvbas1.dll" Alias
"RNBOsproInitialize" (p1 As Variant) As Integer
Declare Function extfn0293 Lib "sspvbas1.dll" Alias
"RNBOsproOverwrite" () As Integer
Declare Function extfn02D1 Lib "sspvbas1.dll" Alias "RNBOsproQuery"
(p1 As Variant, ByVal p2%, p3$, p4$, p5&, ByVal p6%) As Integer
Declare Function extfn025A Lib "sspvbas1.dll" Alias "RNBOsproRead" ()
As Integer
Declare Function extfn0282 Lib "sspvbas1.dll" Alias "RNBOsproWrite" ()
As Integer
WHeneer any of these "functions" are called, I get the error message
"Runtime Error 48: File not found: sspvbas1.dll"
I've put a copy of it in the c:\windows\system dir and it astll can't
find it - it wont let me add it as a reference either.... what's going
on?
I think i t may be to do with the fact that the parapeter it is
Declare Function extfn01E0 Lib "sspvbas1.dll" Alias
"RNBOsproInitialize" (p1 As Variant) As Integer
Would that affect it?
Tym
~There's no place like 127.0.0.1~
Paul Clement
2006-05-27 03:01:51 UTC
Permalink
On Fri, 26 May 2006 13:18:27 +0100, "Steve Barnett" <***@nodomain.com> wrote:

¤ I may be completely wrong with this comment but, if DLL this came with the
¤ VB3 program, it's probably a 16-bit dll... I wouldn't have thought that
¤ worked in VB6 which is 32-bit no matter how you specify the declare.
¤

Good point. I had considered that as well although I would have expected a
different error message. Perhaps the tip-off is the fact that the installation
folder is supposed to be System instead of System32.

If appears to be from a product called Sentinel SuperPro, although I have no
idea which version is being used.

Paul
~~~~
Microsoft MVP (Visual Basic)
Steve Barnett
2006-05-27 10:23:11 UTC
Permalink
I used a Sentinel dongle many years ago and found the following definitions,
if they help. The SDK was free when I applied for it from Rainbow; it might
still be. However, these are the calls I made to the 32-bit library.

Private Type APIPACKET
data(4096) As Byte
End Type

Private Const ERROR_KEY_NOT_INITIALISED = 1000
Private Const ERROR_INSUFFICIENT_TOKENS = 1001
Private Const ERROR_KEY_NOT_AVAILABLE = 1002
Private Const ERROR_READ_KEY_ERROR = 1003
Private Const ERROR_WRITE_KEY_ERROR = 1004
Private Const ERROR_INVALID_KEY = 1005

Private Declare Function RNBOsproFormatPacket% Lib "sx32w.dll" (ApiPack As
APIPACKET, ByVal ApiPackSize%)
Private Declare Function RNBOsproInitialize% Lib "sx32w.dll" (ApiPack As
APIPACKET)
Private Declare Function RNBOsproGetFullStatus% Lib "sx32w.dll" (ApiPack As
APIPACKET)
Private Declare Function RNBOsproGetVersion% Lib "sx32w.dll" (ApiPack As
APIPACKET, majv%, minv%, rev%, ostype%)
Private Declare Function RNBOsproFindFirstUnit% Lib "sx32w.dll" (ApiPack As
APIPACKET, ByVal DEVELOPERID%)
Private Declare Function RNBOsproFindNextUnit% Lib "sx32w.dll" (ApiPack As
APIPACKET)
Private Declare Function RNBOsproRead% Lib "sx32w.dll" (ApiPack As
APIPACKET, ByVal address%, Datum%)
Private Declare Function RNBOsproExtendedRead% Lib "sx32w.dll" (ApiPack As
APIPACKET, ByVal address%, Datum%, accessCode%)
Private Declare Function RNBOsproWrite% Lib "sx32w.dll" (ApiPack As
APIPACKET, ByVal wPass%, ByVal address%, ByVal Datum%, ByVal accessCode%)
Private Declare Function RNBOsproOverwrite% Lib "sx32w.dll" (ApiPack As
APIPACKET, ByVal wPass%, ByVal oPass1%, ByVal oPass2&, ByVal address&, ByVal
Datum%, ByVal accessCode%)
Private Declare Function RNBOsproDecrement% Lib "sx32w.dll" (ApiPack As
APIPACKET, ByVal wPass%, ByVal address%)
Private Declare Function RNBOsproActivate% Lib "sx32w.dll" (ApiPack As
APIPACKET, ByVal wPass%, ByVal aPass1%, ByVal aPass2%, ByVal address%)
Private Declare Function RNBOsproQuery% Lib "sx32w.dll" (ApiPack As
APIPACKET, ByVal address%, ByVal qStr$, ByVal qResp$, unused As Long, ByVal
length&)

Public iLastError As Integer
Public iLastKeyError As Integer
Public bKeyInitialised As Boolean
Private lvApiPack As APIPACKET

I suppose the key bit of code was the initialisation stuff, which consisted
of:

rc = RNBOsproFormatPacket(lvApiPack, 4096)
rc = RNBOsproInitialize(lvApiPack)

Where "rc" was an integer.

Distribution required only the "sx32w.dll". However, you did have to install
the Sentinel drivers on the PC before you ran your app and that was a
program that Rainbow provided.

Hope that's vaguely useful.
Steve
€ I may be completely wrong with this comment but, if DLL this came with
the
€ VB3 program, it's probably a 16-bit dll... I wouldn't have thought that
€ worked in VB6 which is 32-bit no matter how you specify the declare.

Good point. I had considered that as well although I would have expected a
different error message. Perhaps the tip-off is the fact that the installation
folder is supposed to be System instead of System32.
If appears to be from a product called Sentinel SuperPro, although I have no
idea which version is being used.
Paul
~~~~
Microsoft MVP (Visual Basic)
Tym
2006-05-29 10:47:50 UTC
Permalink
On Sat, 27 May 2006 11:23:11 +0100, "Steve Barnett"
Post by Steve Barnett
Hope that's vaguely useful.
Steve
Steve,

I think you've hit on the soource of the problem. I believe that the
old compay used a dongle. Obviously I don't ahve access to this info
anymore and as I've been approached by the "user group" to forward
development I think I'm safe to remove these elements of the source
code and install my usual licensing routines.

Thanks for the "heads-up" on that one!

Tym

~There's no place like 127.0.0.1~
Ralph
2006-05-24 04:51:53 UTC
Permalink
Post by Tym
I have been tasked with re-developing an old VB3 app. I have vb4,6 and
2005.net
I do not have the original source code (long story) but have got a
decompiler which has created the necessary source files.
Problem 1 - the .frm files are binary. VB6 can't read them - but
vb4(16 bit) can. The idea is to get vb4 to create "proper" forms I can
then load into vb6 - don't know if this will work. If not - I'll have
to develope it in VB4 (sigh)
The program uses an old 2.? DAO to access an access 2 .mdb database so
I am reluctant to migrate this to ADO.NET - thinking of leaving it
with DAO on vb6 - its what I know best!
Problem 2 - the forms appear to have custom controls on them
VBX.SSFrame and the like. This is preventing the forms from loading
properly. IS ther a way I can recreate these, or download something
similar from somewhere and rename them???
I've obtained a copy of sswin.dll, but can't register it. Probably the
fact the regsvr32 can register 16 bit dlls??? DOn't know if that's
realted to the VBX.ss??? controls....?
Is there a way round this as I don't like to let customers down.
Tym
~There's no place like 127.0.0.1~
"The program uses an old 2.? DAO to access an access 2 .mdb database so I am
reluctant to migrate this to ADO.NET - thinking of leaving it with DAO on
vb6 - its what I know best!"

There is nothing wrong with sticking to DAO for an MSAccess database - there
are in fact advantages - especially if it is local.

Are you going to upgrade the MSAccess2 mdb files to something newer? There
is one cravat if you leave them as Jet2. Writing to or sharing a Jet 2
database with other versions of the Jet engine at the same time is
practically guaranteed to corrupt the database. (Actually there are only a
few small problem datatypes - so you might luck out - but few seldom do.
<g>)

-ralph
Tym
2006-05-24 05:35:58 UTC
Permalink
On Tue, 23 May 2006 23:51:53 -0500, "Ralph"
Post by Ralph
Are you going to upgrade the MSAccess2 mdb files to something newer? There
is one cravat if you leave them as Jet2. Writing to or sharing a Jet 2
database with other versions of the Jet engine at the same time is
practically guaranteed to corrupt the database. (Actually there are only a
few small problem datatypes - so you might luck out - but few seldom do.
<g>)
I've had that one!! Will upgrade it too!
Tym

~There's no place like 127.0.0.1~
Dale Payne
2007-05-16 14:08:14 UTC
Permalink
*** Sent via Developersdex http://www.developersdex.com ***
Ralph
2007-05-16 21:38:28 UTC
Permalink
Post by Dale Payne
*** Sent via Developersdex http://www.developersdex.com ***
Let me guess. The control is generating spurious Alt+S or Enter keystrokes?

-ralph
Robert Morley
2007-05-17 00:22:04 UTC
Permalink
Hahaha...took me a few seconds to clue in, but that was funny!


Rob
Post by Ralph
Post by Dale Payne
*** Sent via Developersdex http://www.developersdex.com ***
Let me guess. The control is generating spurious Alt+S or Enter keystrokes?
-ralph
Loading...