By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
444,199 Members | 1,077 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 444,199 IT Pros & Developers. It's quick & easy.

COM Interface Question

P: n/a
I am having trouble with the 'User' property (get and put), found near
the bottom of the IDL file listed below. The user get call seems to
return None, not sure why.

More importantly, is there another way to get the 'IUser' value
required for the user put call? (Perhaps I need to make the put call
before the get call).

Sorry for the long IDL file, tried to delete a lot of non-relevant
code. Thanks so much for your help on this one.

Olaf
// ERFile.idl : IDL source for ERFile.dll
//

// This file will be processed by the MIDL tool to
// produce the type library (ERFile.tlb) and marshalling code.

import "oaidl.idl";
import "ocidl.idl";

[
uuid(bf79b6c5-47be-11d2-bacd-006008060a3a),
version(1.0),
helpstring("ERFile 1.0 Type Library")
]
library ERFile
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
[
object,
uuid(bf79b6c7-47be-11d2-bacd-006008060a3a),
dual,
helpstring("IERecord Interface"),
pointer_default(unique),
nonextensible,
hidden
]
interface IUser : IDispatch
{
[id(1), helpstring("method Login")]
HRESULT Login([in] BSTR Username, [in] BSTR Password);

code deleted here

};
[
object,
uuid(bf79b6c9-47be-11d2-bacd-006008060a3a),
dual,
helpstring("IERecord Interface"),
pointer_default(unique),
nonextensible,
hidden
]
interface IERecord : IDispatch
{
[propget, id(1), helpstring("property User")]
HRESULT User([out, retval] IUser* *pVal);

[propput, id(1), helpstring("property User")]
HRESULT User([in] IUser *newVal);

code delted here

};

code delted here
};
Jul 18 '05 #1
Share this Question
Share on Google+
3 Replies


P: n/a
Olaf Meding wrote:
I am having trouble with the 'User' property (get and put), found near
the bottom of the IDL file listed below. The user get call seems to
return None, not sure why.
Possibly as the property has no value yet. After a successful set, you
may find it works.
More importantly, is there another way to get the 'IUser' value
required for the user put call? (Perhaps I need to make the put call
before the get call).


It depends on the application - there will generally be either a progid
(so Dispatch() can create one), or some technique in the object model
for creating one. The last alternative is that they expect you to
implement this interface, but with the limited information available
here, that sounds unlikely.

Mark.
Jul 18 '05 #2

P: n/a
Mark

The IDL shows a uuid for the IUser interface (bf79...). How would I use
IDispatch() to create an IUser as required by the put user call?

Here are excerpts from the IDL file:
[
object,
uuid(bf79b6c7-47be-11d2-bacd-006008060a3a),
dual,
helpstring("IERecord Interface"),
pointer_default(unique),
nonextensible,
hidden
]
interface IUser : IDispatch

interface IERecord : IDispatch
{
[propput, id(1), helpstring("property User")]
HRESULT User([in] IUser *newVal);

Again, your help is much appreciated.

Olaf


Jul 18 '05 #3

P: n/a
Olaf Meding wrote:
Mark

The IDL shows a uuid for the IUser interface (bf79...). How would I use
IDispatch() to create an IUser as required by the put user call?

Here are excerpts from the IDL file:


There is nothing in that IDL that implies it can be created by an
IDispatch call - it is just describing the interface. Generally a
CoClass entry in the IDL indicates it can be publically created, but you
haven't shown that - but in that case, the makepy code will include a
comment telling you the progid, so I doubt it exists.

Surely there is documentation or a sample (in any language) for this object?

Mark.
Jul 18 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.