473,394 Members | 1,875 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,394 software developers and data experts.

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 3096
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
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
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
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
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
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
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
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
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
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
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
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
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...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...

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.