473,499 Members | 1,618 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

dll problem: vb6 and vb.net writing smart tags

Hi,

In a nutshell, my question is: how do i make a dll that I compile from
vb.net code register and work like one compiled as an ActiveX dll in VB6?

The IDE of my copy of visual basic.net does not provide me with the
option to build a class library (dll)--instead I can use the command
line (though I don't know how to replicate the "Register for COM
Interop" option that is grayed-out in the IDE, which may be my problem).

I am trying to build smart tags (a dll that will be recognized by Office
products--in my case Word and Excel). I can get them working
successfully from VB6, but I really want to use .NET instead. From VB6,
I did nothing more than A) compile an activeX DLL, and B) Manually add
two neccessary entries in the Smart Tags key of the registry. At this
point Word automatically recognizes my dll and executes the code within
it as appropriate.

From VB.NET, I A) compile a dll from the command line, B) run "regasm
dllname.dll", and C) Manually add the two entries in the Smart Tags key
of the registry. However, Word does not recognize that my vb.net
smarttag dll even exists, much less the words within it.

So, what is the VB6 compiler doing when it compiles an activeX DLL (I
assume it's making certain registry entries?) and how do I replicate
that from the command line for vb.net?

Thanks very much for any knowledge you have!

-Casey
Jul 21 '05 #1
10 3100
On 2004-11-30, C Williams <no****@thank.you> wrote:
Hi,

In a nutshell, my question is: how do i make a dll that I compile from
vb.net code register and work like one compiled as an ActiveX dll in VB6?

The IDE of my copy of visual basic.net does not provide me with the
option to build a class library (dll)--instead I can use the command
line (though I don't know how to replicate the "Register for COM
Interop" option that is grayed-out in the IDE, which may be my problem).

I am trying to build smart tags (a dll that will be recognized by Office
products--in my case Word and Excel). I can get them working
successfully from VB6, but I really want to use .NET instead. From VB6,
I did nothing more than A) compile an activeX DLL, and B) Manually add
two neccessary entries in the Smart Tags key of the registry. At this
point Word automatically recognizes my dll and executes the code within
it as appropriate.

From VB.NET, I A) compile a dll from the command line, B) run "regasm
dllname.dll", and C) Manually add the two entries in the Smart Tags key
of the registry. However, Word does not recognize that my vb.net
smarttag dll even exists, much less the words within it.

So, what is the VB6 compiler doing when it compiles an activeX DLL (I
assume it's making certain registry entries?) and how do I replicate
that from the command line for vb.net?

Thanks very much for any knowledge you have!

-Casey


I'm not an export on this - I've never needed to create a COM Callable
Wrapper (CCW), but I believe once you compile your assembly you'll want
too run tlbexport on it. This should generate a typelibary so that it
can be called from COM.

--
Tom Shelton [MVP]
Jul 21 '05 #2
On 2004-11-30, C Williams <no****@thank.you> wrote:
Hi,

In a nutshell, my question is: how do i make a dll that I compile from
vb.net code register and work like one compiled as an ActiveX dll in VB6?

The IDE of my copy of visual basic.net does not provide me with the
option to build a class library (dll)--instead I can use the command
line (though I don't know how to replicate the "Register for COM
Interop" option that is grayed-out in the IDE, which may be my problem).

I am trying to build smart tags (a dll that will be recognized by Office
products--in my case Word and Excel). I can get them working
successfully from VB6, but I really want to use .NET instead. From VB6,
I did nothing more than A) compile an activeX DLL, and B) Manually add
two neccessary entries in the Smart Tags key of the registry. At this
point Word automatically recognizes my dll and executes the code within
it as appropriate.

From VB.NET, I A) compile a dll from the command line, B) run "regasm
dllname.dll", and C) Manually add the two entries in the Smart Tags key
of the registry. However, Word does not recognize that my vb.net
smarttag dll even exists, much less the words within it.

So, what is the VB6 compiler doing when it compiles an activeX DLL (I
assume it's making certain registry entries?) and how do I replicate
that from the command line for vb.net?

Thanks very much for any knowledge you have!

-Casey


As a further note, there is information on this in the documentation...
Look for information on COM Callable Wrappers and tlbexport.

--
Tom Shelton [MVP]
Jul 21 '05 #3
You don't need to do this, check the 'Register for COM Interop' box in
Project Properties and it'll do it for you. You then need to regasm it
(rather than regsvr32) if you want it on another machine.
"Tom Shelton" wrote:
On 2004-11-30, C Williams <no****@thank.you> wrote:
Hi,

In a nutshell, my question is: how do i make a dll that I compile from
vb.net code register and work like one compiled as an ActiveX dll in VB6?

The IDE of my copy of visual basic.net does not provide me with the
option to build a class library (dll)--instead I can use the command
line (though I don't know how to replicate the "Register for COM
Interop" option that is grayed-out in the IDE, which may be my problem).

I am trying to build smart tags (a dll that will be recognized by Office
products--in my case Word and Excel). I can get them working
successfully from VB6, but I really want to use .NET instead. From VB6,
I did nothing more than A) compile an activeX DLL, and B) Manually add
two neccessary entries in the Smart Tags key of the registry. At this
point Word automatically recognizes my dll and executes the code within
it as appropriate.

From VB.NET, I A) compile a dll from the command line, B) run "regasm
dllname.dll", and C) Manually add the two entries in the Smart Tags key
of the registry. However, Word does not recognize that my vb.net
smarttag dll even exists, much less the words within it.

So, what is the VB6 compiler doing when it compiles an activeX DLL (I
assume it's making certain registry entries?) and how do I replicate
that from the command line for vb.net?

Thanks very much for any knowledge you have!

-Casey


I'm not an export on this - I've never needed to create a COM Callable
Wrapper (CCW), but I believe once you compile your assembly you'll want
too run tlbexport on it. This should generate a typelibary so that it
can be called from COM.

--
Tom Shelton [MVP]

Jul 21 '05 #4
On Tue, 30 Nov 2004 23:12:35 GMT, C Williams <no****@thank.you> wrote:

¤ Hi,
¤
¤ In a nutshell, my question is: how do i make a dll that I compile from
¤ vb.net code register and work like one compiled as an ActiveX dll in VB6?
¤
¤ The IDE of my copy of visual basic.net does not provide me with the
¤ option to build a class library (dll)--instead I can use the command
¤ line (though I don't know how to replicate the "Register for COM
¤ Interop" option that is grayed-out in the IDE, which may be my problem).
¤
¤ I am trying to build smart tags (a dll that will be recognized by Office
¤ products--in my case Word and Excel). I can get them working
¤ successfully from VB6, but I really want to use .NET instead. From VB6,
¤ I did nothing more than A) compile an activeX DLL, and B) Manually add
¤ two neccessary entries in the Smart Tags key of the registry. At this
¤ point Word automatically recognizes my dll and executes the code within
¤ it as appropriate.
¤
¤ From VB.NET, I A) compile a dll from the command line, B) run "regasm
¤ dllname.dll", and C) Manually add the two entries in the Smart Tags key
¤ of the registry. However, Word does not recognize that my vb.net
¤ smarttag dll even exists, much less the words within it.
¤
¤ So, what is the VB6 compiler doing when it compiles an activeX DLL (I
¤ assume it's making certain registry entries?) and how do I replicate
¤ that from the command line for vb.net?
¤
¤ Thanks very much for any knowledge you have!

If this is an Office Add-in you may want to take a look at the following MS KB article:

http://support.microsoft.com/default...b;en-us;302896
Paul ~~~ pc******@ameritech.net
Microsoft MVP (Visual Basic)
Jul 21 '05 #5


Actually the following article is probably a bit more applicable:

Building Smart Tags in Microsoft Visual Basic .NET
http://msdn.microsoft.com/library/de...dc_stvbnet.asp
Paul ~~~ pc******@ameritech.net
Microsoft MVP (Visual Basic)
Jul 21 '05 #6
In article <D8**********************************@microsoft.co m>, Bonj wrote:
You don't need to do this, check the 'Register for COM Interop' box in
Project Properties and it'll do it for you. You then need to regasm it
(rather than regsvr32) if you want it on another machine.


He can't check the register for com interop box though... He says it is
greyed out... I suspect that it is the VB.NET standard product - but I
don't have that to confirm. If so, then he'll need to do this stuff
manually from the command line...

--
Tom Shelton [MVP]
OS Name: Microsoft Windows XP Professional
OS Version: 5.1.2600 Service Pack 2 Build 2600
System Up Time: 39 Days, 19 Hours, 33 Minutes, 47 Seconds
Jul 21 '05 #7
Thanks, Tom. I might not be understanding it correctly, but the
documentation says:

Tlbexp.exe generates a type library but does not register it. This is in
contrast to the Assembly Registration tool (Regasm.exe), which both
generates and registers a type library. To generate and register a type
library with COM, use Regasm.exe.

Because I think I need to get my library registered, I tried adding the
/tlb flag to regasm, but again to no avail.
Tom Shelton wrote:
On 2004-11-30, C Williams <no****@thank.you> wrote:
Hi,

In a nutshell, my question is: how do i make a dll that I compile from
vb.net code register and work like one compiled as an ActiveX dll in VB6?

The IDE of my copy of visual basic.net does not provide me with the
option to build a class library (dll)--instead I can use the command
line (though I don't know how to replicate the "Register for COM
Interop" option that is grayed-out in the IDE, which may be my problem).

I am trying to build smart tags (a dll that will be recognized by Office
products--in my case Word and Excel). I can get them working
successfully from VB6, but I really want to use .NET instead. From VB6,
I did nothing more than A) compile an activeX DLL, and B) Manually add
two neccessary entries in the Smart Tags key of the registry. At this
point Word automatically recognizes my dll and executes the code within
it as appropriate.

From VB.NET, I A) compile a dll from the command line, B) run "regasm
dllname.dll", and C) Manually add the two entries in the Smart Tags key
of the registry. However, Word does not recognize that my vb.net
smarttag dll even exists, much less the words within it.

So, what is the VB6 compiler doing when it compiles an activeX DLL (I
assume it's making certain registry entries?) and how do I replicate
that from the command line for vb.net?

Thanks very much for any knowledge you have!

-Casey

As a further note, there is information on this in the documentation...
Look for information on COM Callable Wrappers and tlbexport.

Jul 21 '05 #8
I actually have read this article and found it quite useful. The only
problem with it is that it instructs the user to click "Register for COM
Interop" and then compile a class library. I can't do that, though, and
am trying to figure out how to do so from the command line.

Any help would be appreciated!

Paul Clement wrote:

Actually the following article is probably a bit more applicable:

Building Smart Tags in Microsoft Visual Basic .NET
http://msdn.microsoft.com/library/de...dc_stvbnet.asp
Paul ~~~ pc******@ameritech.net
Microsoft MVP (Visual Basic)

Jul 21 '05 #9
Okay, I have discovered two solutions for those who are interested. Tom
was right--I just didn't take it far enough.

1)compile dll using vbc.exe and then run "regasm name.dll /tlb: name.tlb
/codebase "

The /codebase is important, even though I did not strong name my dll and
it gives a warning when regasm exectues. Not sure what's up with
that...but it works.

The other way is far simpler--change my version of Visual Basic so that
it allows the "register for com interop" option. Thank you Herfried Wagner!
http://dotnet.mvps.org/dotnet/faqs/?...raries&lang=en

C Williams wrote:
Hi,

In a nutshell, my question is: how do i make a dll that I compile from
vb.net code register and work like one compiled as an ActiveX dll in VB6?

The IDE of my copy of visual basic.net does not provide me with the
option to build a class library (dll)--instead I can use the command
line (though I don't know how to replicate the "Register for COM
Interop" option that is grayed-out in the IDE, which may be my problem).

I am trying to build smart tags (a dll that will be recognized by Office
products--in my case Word and Excel). I can get them working
successfully from VB6, but I really want to use .NET instead. From VB6,
I did nothing more than A) compile an activeX DLL, and B) Manually add
two neccessary entries in the Smart Tags key of the registry. At this
point Word automatically recognizes my dll and executes the code within
it as appropriate.

From VB.NET, I A) compile a dll from the command line, B) run "regasm
dllname.dll", and C) Manually add the two entries in the Smart Tags key
of the registry. However, Word does not recognize that my vb.net
smarttag dll even exists, much less the words within it.

So, what is the VB6 compiler doing when it compiles an activeX DLL (I
assume it's making certain registry entries?) and how do I replicate
that from the command line for vb.net?

Thanks very much for any knowledge you have!

-Casey

Jul 21 '05 #10
> I suspect that it is the VB.NET standard product

That's the most likely explanation.
- but I
don't have that to confirm. If so, then he'll need to do this stuff
manually from the command line...

--
Tom Shelton [MVP]
OS Name: Microsoft Windows XP Professional
OS Version: 5.1.2600 Service Pack 2 Build 2600
System Up Time: 39 Days, 19 Hours, 33 Minutes, 47 Seconds

Jul 21 '05 #11

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

16
1605
by: yuraukar | last post by:
I am trying to create a garbage collection class in C++ to collect instances of a specific class (so no general gc). The approach is to use smart pointers and a mark and a simple sweep gc. ...
1
1540
by: Ja NE | last post by:
sometimes people just forget to close formating tag while writing message in forum (or enywhere else) so I wrote those lines (for <b>, <i> and <a> tags) $i_open = substr_count($tekst, "<i>");...
1
1805
by: Jyothi | last post by:
Hi All, Can anybody tell me how to create smart tags like what we see in MS word application? TIA, Jyothi
8
1911
by: Inigo Jimenez | last post by:
I have an ASP .net web application installed in a Windows 2003 server. This web application has a webform that has a Datagrid. This Datagrid is filled with the data of a SQL table. I have a...
10
1246
by: C Williams | last post by:
Hi, In a nutshell, my question is: how do i make a dll that I compile from vb.net code register and work like one compiled as an ActiveX dll in VB6? The IDE of my copy of visual basic.net does...
1
609
by: jmarr02s | last post by:
I am trying to enable the Person Name Smart Tag, but after I open up my table in Design view and select the field (in this case CustomerName field), click in the Smart Tag text box, click the Build...
6
2086
by: shror | last post by:
hi every body, i have a problem dealing with a quiz system in php. the idea is that am building a quiz system by giving a question and choices in radio buttons, and after selecting the answer...
0
1242
by: cruster | last post by:
Hey folks. I'm developing an ASP.NET custom control and have assciated a custom ControlDesigner with it. I'm using smart tags in design time like this: public override...
0
1050
by: PSiegmann | last post by:
Hi group, I have the problem, that smart tags don't seem to work on all controls. I rightclick on it, there is an entry in the context menu, but it is grayed. I can't click on it. Any ideas?...
0
7132
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
7009
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
1
6899
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
7390
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
1
4919
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...
0
4602
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
0
3103
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The...
0
3094
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
0
302
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.