Merging ActiveX Control

K

Khaled Hussein

Hi Every body,
I am currently working in aproject where I am stuck in merging an
ActiveX control (*.ocx) file into a managed Class Library (*.dll). I want to
hide the ActiveX Control in this managed Dll, so that even when things are
deployed I don't wanna see two files, but only 1 file which is the dll, and
it would contain within it, the other ocx file.

Is this possible? If yes, then how can I do something like this, I tried to
use ILMerge, but it sounds that it doesn't do what I wanted to have..

Thanks
Khaled Hussein
 
W

Willy Denoyette [MVP]

| Hi Every body,
| I am currently working in aproject where I am stuck in merging an
| ActiveX control (*.ocx) file into a managed Class Library (*.dll). I want
to
| hide the ActiveX Control in this managed Dll, so that even when things are
| deployed I don't wanna see two files, but only 1 file which is the dll,
and
| it would contain within it, the other ocx file.
|
| Is this possible? If yes, then how can I do something like this, I tried
to
| use ILMerge, but it sounds that it doesn't do what I wanted to have..
|
| Thanks
| Khaled Hussein
|
|

No, activeX control libraries (DLL's or OCX) locations are registered in the
COM DB (the component regisry) such that they can be loaded by the COM
infrastructure, COM is not designed to load them from anything else.
I don't see why you need this,really.

Willy.
 
K

Khaled Hussein

Willy,
First, Thanks for your concern..
Second, OK, if I can't hide it inside my dll, then I would have another
question .. is there any way to Register this COM programatically from my
application? (I don't mean deployment stuff) .. but I would need a function
for example to register this COM object, and then these other functions
start using it..

Is it possible to do it?
Thanks
Khaled Hussein
 
S

shan

hi
i need ur help khalid since u used ilmerge .

i have a problem i have one windows service which i am installing from
one other exe(in process.start simply using cmd.exe and installutil)
now i want to combine these both exes into one for deployment.
see tell me how i will use path for the windows service when i will
embedd it into the one whole exe(in cmd.exe installutil)
can i give path of the exe which i am itself merging into it .
i meam how ilmerge will merge both


shan
 
K

Khaled Hussein

I don't know much about ILMerge, I was just looking for specific
functionality indeed. But I don't think this applies to webservices.
 
W

Willy Denoyette [MVP]

Not sure what kind of component you are talking about, but an OCX is an
ActiveX control type, that means it's instantiated with it's control
container (a Windows Form?), that means that it must be registered before
you can (successfully) create an instance of the control container. That
would mean that you need to check the registry (query the CLSID or ProgID)
for the component and register it when not found, registering can be done by
calling Process.Start and shell-out Regsvr32.exe, just make sure that you
need to specify the full path of the ocx file.
I must say that I hate this whole idea though, you should never install
application components without providing an installer/uninstaller.

Willy.



| Willy,
| First, Thanks for your concern..
| Second, OK, if I can't hide it inside my dll, then I would have another
| question .. is there any way to Register this COM programatically from my
| application? (I don't mean deployment stuff) .. but I would need a
function
| for example to register this COM object, and then these other functions
| start using it..
|
| Is it possible to do it?
| Thanks
| Khaled Hussein
|
| | >
| >
| > | > | Hi Every body,
| > | I am currently working in aproject where I am stuck in merging an
| > | ActiveX control (*.ocx) file into a managed Class Library (*.dll). I
| > want
| > to
| > | hide the ActiveX Control in this managed Dll, so that even when things
| > are
| > | deployed I don't wanna see two files, but only 1 file which is the
dll,
| > and
| > | it would contain within it, the other ocx file.
| > |
| > | Is this possible? If yes, then how can I do something like this, I
tried
| > to
| > | use ILMerge, but it sounds that it doesn't do what I wanted to have..
| > |
| > | Thanks
| > | Khaled Hussein
| > |
| > |
| >
| > No, activeX control libraries (DLL's or OCX) locations are registered in
| > the
| > COM DB (the component regisry) such that they can be loaded by the COM
| > infrastructure, COM is not designed to load them from anything else.
| > I don't see why you need this,really.
| >
| > Willy.
| >
| >
|
|
 
W

Willy Denoyette [MVP]

Could be an option, but there are a lot of restrictions, it's only available
on XP and higher, and it depends on the type of application, for instance if
the control is to be hosted in the Webbrowser control it won't work.

Willy.

message | The only option that I can think of which might be a better solution is
| to use registration-free COM, which would prevent the need for registering
| the component. The following article shows how to do it:
|
| http://msdn.microsoft.com/msdnmag/issues/05/04/RegFreeCOM/default.aspx
|
| Hope this helps.
|
| --
| - Nicholas Paldino [.NET/C# MVP]
| - (e-mail address removed)
|
| | > Not sure what kind of component you are talking about, but an OCX is an
| > ActiveX control type, that means it's instantiated with it's control
| > container (a Windows Form?), that means that it must be registered
before
| > you can (successfully) create an instance of the control container. That
| > would mean that you need to check the registry (query the CLSID or
ProgID)
| > for the component and register it when not found, registering can be
done
| > by
| > calling Process.Start and shell-out Regsvr32.exe, just make sure that
you
| > need to specify the full path of the ocx file.
| > I must say that I hate this whole idea though, you should never install
| > application components without providing an installer/uninstaller.
| >
| > Willy.
| >
| >
| >
| > | > | Willy,
| > | First, Thanks for your concern..
| > | Second, OK, if I can't hide it inside my dll, then I would have
another
| > | question .. is there any way to Register this COM programatically from
| > my
| > | application? (I don't mean deployment stuff) .. but I would need a
| > function
| > | for example to register this COM object, and then these other
functions
| > | start using it..
| > |
| > | Is it possible to do it?
| > | Thanks
| > | Khaled Hussein
| > |
| > | | > | >
| > | >
| > | > | > | > | Hi Every body,
| > | > | I am currently working in aproject where I am stuck in merging
an
| > | > | ActiveX control (*.ocx) file into a managed Class Library (*.dll).
I
| > | > want
| > | > to
| > | > | hide the ActiveX Control in this managed Dll, so that even when
| > things
| > | > are
| > | > | deployed I don't wanna see two files, but only 1 file which is the
| > dll,
| > | > and
| > | > | it would contain within it, the other ocx file.
| > | > |
| > | > | Is this possible? If yes, then how can I do something like this, I
| > tried
| > | > to
| > | > | use ILMerge, but it sounds that it doesn't do what I wanted to
| > have..
| > | > |
| > | > | Thanks
| > | > | Khaled Hussein
| > | > |
| > | > |
| > | >
| > | > No, activeX control libraries (DLL's or OCX) locations are
registered
| > in
| > | > the
| > | > COM DB (the component regisry) such that they can be loaded by the
COM
| > | > infrastructure, COM is not designed to load them from anything else.
| > | > I don't see why you need this,really.
| > | >
| > | > Willy.
| > | >
| > | >
| > |
| > |
| >
| >
|
|
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top