Determining container identity from within OLE server
Jon Steer -- jsteer@bitscout.com
Sunday, December 29, 1996
Environment: VC++ 4.2b, Win 95, NT 4.0
I am attempting to determine the identity (name,executable,clsid,...) of
the container application that has launched my embedded document server.
I need to be able to determine this fairly early on (preferably
within the InitInstance of my application.
I have seen several other applications (notably Lotus Notes) which
seem to be able to determine this, but I can't seem to figure out
what to use.
I thought that I might be able to figure this out using windows references
but lookingwith Spy++ showed me that my OLE server windows are not children
of the container application.
I also looked around with ROTViewer while containers were active and
discovered that no names/monikers were available for me to use.
thanks,
jon
Jon Steer --- BitScout Software,Inc --- Software Consulting and Products
Specialties: Device Drivers, Communications, H.320 Systems Consulting
BitScout Software,Inc 40 Berkeley St, Nashua N.H. 03060
phone:(603)889-1185 video: (603)889-1125 fax: (603)-883-9365
E-mail: jsteer@BitScout.com URL: http://www.BitScout.com/
"I got a box!!" a joyous Lucy Steer, age 2.5; receiving her Christmas
present before realizing that there was actually something inside.
Bing Hou -- hou@tfn.com
Monday, December 30, 1996
Hi Jon,
Override the COleServerDoc::OnSetHostNames(LPCSTR lpszHost,
LPCSTR lpszHostObj)
Where lpszHost is the container application's name and the
lpszHostObj is the container document's name.
The OnSetHostNames is called if your application is an embedded
object. And it's called before anything shows so it is fairly early
on.
Hope this gives you some idea, if you need more information, please
refer to Brockschmidt's Inside OLE sec. edit. Chapter 18 'OLE
Documents and Local Embedding Servers'.
-Bing
______________________________ Reply Separator _________________________________
Subject: Determining container identity from within OLE server
Author: Jon Steer at Internet
Date: 12/29/96 11:11 PM
Environment: VC++ 4.2b, Win 95, NT 4.0
I am attempting to determine the identity (name,executable,clsid,...) of
the container application that has launched my embedded document server.
I need to be able to determine this fairly early on (preferably
within the InitInstance of my application.
I have seen several other applications (notably Lotus Notes) which
seem to be able to determine this, but I can't seem to figure out
what to use.
I thought that I might be able to figure this out using windows references
but lookingwith Spy++ showed me that my OLE server windows are not children
of the container application.
I also looked around with ROTViewer while containers were active and
discovered that no names/monikers were available for me to use.
thanks,
jon
Jon Steer --- BitScout Software,Inc --- Software Consulting and Products
Specialties: Device Drivers, Communications, H.320 Systems Consulting
BitScout Software,Inc 40 Berkeley St, Nashua N.H. 03060
phone:(603)889-1185 video: (603)889-1125 fax: (603)-883-9365
E-mail: jsteer@BitScout.com URL: http://www.BitScout.com/
"I got a box!!" a joyous Lucy Steer, age 2.5; receiving her Christmas
present before realizing that there was actually something inside.
Mike Blaszczak -- mikeblas@nwlink.com
Monday, December 30, 1996
At 23:11 12/29/96 -0500, Jon Steer wrote:
>Environment: VC++ 4.2b, Win 95, NT 4.0
>I am attempting to determine the identity (name,executable,clsid,...) of
>the container application that has launched my embedded document server.
Why? This is incredibly unorthodox, and swims against the modular,
independent nature of OLE. Your object should work fine no matter who's
containing it. If you need to know anything in particular about the
container, you should QI for interfaces that your container implements.
If you get NULL back, those interfaces don't exist and you can't do
whatever special behaviour you were thinking of.
>I have seen several other applications (notably Lotus Notes) which
>seem to be able to determine this, but I can't seem to figure out
>what to use.
What does Notes do with that information?
.B ekiM
http://www.nwlink.com/~mikeblas/
I'm afraid I've become some sort of speed freak.
These words are my own. I do not speak on behalf of Microsoft.
Jon Steer -- jsteer@bitscout.com
Tuesday, December 31, 1996
At 04:42 PM 12/30/96 -0800, Mike Blaszczak wrote:
>At 23:11 12/29/96 -0500, Jon Steer wrote:
>>Environment: VC++ 4.2b, Win 95, NT 4.0
>
>>I am attempting to determine the identity (name,executable,clsid,...) of
>>the container application that has launched my embedded document server.
>
>Why? This is incredibly unorthodox, and swims against the modular,
>independent nature of OLE.
Yes, and no. My server application uses Netmeeting to talk to
it's equivalent application/document on the other side.
If my server doc/app is embedded in another document type,
I want to launch that application remotely so that
both documents/app's can converse.
There are a large number of reasons why I don't want to
do this with NetMeeting application sharing.
I can see many reasons why somebody might want to embedd
better value-add functionality in their containers and
be better coupled between container/server.
>Your object should work fine no matter who's
>containing it. If you need to know anything in particular about the
>container, you should QI for interfaces that your container implements.
>If you get NULL back, those interfaces don't exist and you can't do
>whatever special behaviour you were thinking of.
Hmmm... That's another interesting way to determine my container and
probably more generic to what I'm doing. Thanks!
The immediate answer that was given to me by Bing Hou (thanks! Bing)
is to override OnSetHostNames which gives me the application. However,
one of the problems with this is that OnSetHostNames has a (bug/feature/
documentation error) where it gives the document type not the actual
document name (including path).
You also don't get a new call to OnSetHostNames when the container
document changes name (i.e. SaveAs) which is a problem for me.
Lotus Notes uses this information to allow information sharing between
the container (Notes) and the server (for example, Visio). Lotus calls
this "technology" Notes/FX.
jon
Jon Steer --- BitScout Software,Inc --- Software Consulting and Products
Specialties: Device Drivers, Communications, H.320 Systems Consulting
BitScout Software,Inc 40 Berkeley St, Nashua N.H. 03060
phone:(603)889-1185 video: (603)889-1125 fax: (603)-883-9365
E-mail: jsteer@BitScout.com URL: http://www.BitScout.com/
"I got a box!!" a joyous Lucy Steer, age 2.5; receiving her Christmas
present before realizing that there was actually something inside.
| Вернуться в корень Архива
|