|
A COM object need not run in the thread that created it: it depends on the threading models of the thread that created it the threading model of the control. For example if an MTA thread tries to create an object that needs a STA thread the object will be created in a different thread (an STA thread) and its interface pointer will be marshaled to the client thread (an MTA thread).
Steve
|
|
|
|
|
Stephen Hewitt wrote: if an MTA thread tries to create an object that needs a STA thread the object will be created in a different thread
That's true.
But as I understood the OP's threading problem it was desired to have a DLL server running in a different process. What you've described still runs in the same process, even if it's another thread/apartment and threading model.
--
Roger
It's supposed to be hard, otherwise anybody could do it!
Regarding CodeProject: "resistance is pointless; you will be assimilated"
|
|
|
|
|
Roger Stoltz wrote: But as I understood the OP's threading problem it was desired to have a DLL server running in a different process.
I don't come to this conclusion from my reading of the OP's problem.
Steve
|
|
|
|
|
After having read all the replies to your post, I guess you are looking at how to make your COM Dll run in as a surrogate. There is a utility that comes with VisualStudio.NET called "Ole/Com Object Viewer". you can use this to use your dll as a surrogate process. It simply adds some registry entries so it can be done manually as well.
Tribute to Shog:
New CPhog is amazing especially with message posting, very well done Sir.
|
|
|
|
|
Hi,
My friend asked me a question.
He said in his company he doesnt have enough access on the system
He develops com in process component on his machine but since he doesnt have access to write in registry, he can not register his component.
So in his client application he can not get the class if of his component.
Whats the remedy to this.
Anyway he can access his ATL com component in his MFC client application.
Leya
|
|
|
|
|
There is no remedy for this Component information has to be there in the registry inorder to work CoCreateInstance.
Unless the component information is in the registry he can't access the component from MFC or any other client application. I dont understand what excatly you mean by "Anyway he can access his ATL com component in his MFC client application"
cheers...milton kb
|
|
|
|
|
Hi,
I had a COM server(USPServer) which fires some events and the client(DMPClient) which advises to this events will listen to these events.
server events: LinkStateChanged,MessageReceived
Usually we will write a Sink interface that is derived from the server event interface in the client side.
but the code in my project dosent have any sink interface that is derived from the server event interface.
I can see the advise part in the client.
in case of receiving the events in client side i had seen the following code.
<code>
::Invoke (DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS FAR* pdispparams,
VARIANT FAR* pvarResult,EXCEPINFO FAR* pexcepinfo, UINT FAR* puArgErr)
{
METHOD_PROLOGUE (CUSPInterface, USPSink)
switch (dispidMember)
{
case 1:
pThis->OnLinkStateChangedEvent(pdispparams->rgvarg[0].iVal);
break;
case 2:
pThis->OnMessageReceivedEvent(pdispparams->rgvarg[1].iVal, pdispparams->rgvarg
[0].bstrVal);
break;
}
return S_OK;
}
</code>
Can any one please help me to understand the code.
and if any one has a sample code, please send me.
and why is he following this method instead of the regular method?
is there any advantage in following this method?
kk_mfc
|
|
|
|
|
Which class implementation has this Invoke method?
Also, If you can share more info like - the Event Interface name, Advise code etc. then we will be able to help you in a better way
S o h a i l K a d i w a l a
modified 21-Apr-21 21:01pm.
|
|
|
|
|
The event interface name: IUSPLinkSrvObjEvents
the methods in that are LinkStateChanged and Fire_MessageReceived
the mothod definition is in form
<br />
STDMETHODIMP CUSPInterface::XUSPSink::Invoke (DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags,DISPPARAMS FAR* pdispparams, VARIANT FAR* pvarResult, EXCEPINFO FAR* pexcepinfo, UINT FAR* puArgErr)<br />
Invoke is declared in CUSPInterface class
<br />
BEGIN_INTERFACE_PART(USPSink, _IUSPLinkSrvObjEvents)<br />
virtual HRESULT __stdcall GetTypeInfoCount(unsigned int *pInfo) {return 0;};<br />
virtual HRESULT __stdcall GetTypeInfo(unsigned int,unsigned long,struct ITypeInfo ** ) virtual HRESULT __stdcall GetIDsOfNames(const struct _GUID &,unsigned short ** ,unsigned <br />
int,unsigned long,long *) {return 0;};<br />
virtual HRESULT __stdcall Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags,<br />
DISPPARAMS FAR* pdispparams, VARIANT FAR* pvarResult, EXCEPINFO FAR* pexcepinfo, UINT <br />
FAR* puArgErr);<br />
END_INTERFACE_PART (USPSink)<br />
There is no decleration for XUSPSink or USPSink in the entire code itself
kk_vc
|
|
|
|
|
The server component design is as follows:
A dialog based application is created and inserted a new atl object in that application.
the resulting will be a exe.
the client is using the .tlb of server and calling the methods.
|
|
|
|
|
I think these are MFC macros for interfaces. Check MSDN for more details, they have example.
S o h a i l K a d i w a l a
modified 21-Apr-21 21:01pm.
|
|
|
|
|
Why is the last parameter in CoCreateInstance() passed as void** ppv?
That is a pointer to a pointer.
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
The type of the pointer depends on the IID parameter. So the only thing they could do was make it void** and rely on the caller to pass the right pointer and IID.
--Mike--
Visual C++ MVP
LINKS~! Ericahist | PimpFish | CP SearchBar v3.0 | C++ Forum FAQ
|
|
|
|
|
Mike,
You are correct, I agree with you and understand the need of void**. But I always wondered why wasn't it IUnknown**. Any idea?
S o h a i l K a d i w a l a
modified 21-Apr-21 21:01pm.
|
|
|
|
|
I've wondered that myself.
Steve
|
|
|
|
|
That indicates, I am thinking something sensible
Good to know that I am not the only one wondering abt it.
S o h a i l K a d i w a l a
modified 21-Apr-21 21:01pm.
|
|
|
|
|
Sohail Kadiwala wrote: I agree with you and understand the need of void**.
Actually............. humm i am confused tooo, may be designer wanted it to design on lowest level!
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
the following codes are found from the AmCap of the DxSDK to open a video
property sheet to adjust some parameters such as gamma, hue and luminance:
ISpecifyPropertyPages *pSpec;
CAUUID cauuid;
hr = gcap.pVCap->QueryInterface(IID_ISpecifyPropertyPages,
(void **)&pSpec);
if(hr == S_OK)
{
hr = pSpec->GetPages(&cauuid);
hr = OleCreatePropertyFrame(ghwndApp, 30, 30, NULL, 1,
(IUnknown **)&gcap.pVCap, cauuid.cElems,
(GUID *)cauuid.pElems, 0, 0, NULL);
CoTaskMemFree(cauuid.pElems);
pSpec->Release();
}
The camera driver does not have the option of "save as default". I intend to obtain and save those parameters in order to set the camera using the saved parameters. What can I do to realize it?
thanks
|
|
|
|
|
Hi,
I'm pretty new in programming in c++.net, and I was wondering if someone could help me out.
The goal is to control Abobe Acrobat so that it displays a pdf file in my own c++.NET application. I have found an example in the Acrobat SDK called ActiveView which is exactly what I want to achieve, but I have really no idea how it works.
Can anybody give me an explination of how it works, or how to make a start?
thanx!
Bas
|
|
|
|
|
Hi this is nothing but ActiveX.
will u please send the code to me so that i can dissect it for u and give you some
explainations about how each and every part of that is working.
send to redcatsin@hotmail.com
^-^
@|@
- redCat
|
|
|
|
|
Hi,
I have an idl file with the following contents:
// CueComInfc.idl : IDL source for CueComInfc.dll
//
// This file will be processed by the MIDL tool to
// produce the type library (CueComInfc.tlb) and marshalling code.
import "oaidl.idl";
import "ocidl.idl";
[
object,
uuid(697F8101-0494-11d6-A2B0-0060B0FBD872),
helpstring("IHPCUENamedObject Interface"),
pointer_default(unique)
]
interface IHPCUENamedObject : IUnknown
{
HRESULT GetName ([out, retval] BSTR *pVal);
HRESULT PutName ([in] BSTR newVal);
};
[
object,
uuid(697F8102-0494-11d6-A2B0-0060B0FBD872),
helpstring("IHPCUEPropStorage Interface"),
pointer_default(unique)
]
interface IHPCUEPropStorage : IUnknown
{
HRESULT IniSave ([in] BSTR bstrFileName,
[in] BSTR bstrSection, [in] long lIndex);
HRESULT IniLoad ([in] BSTR bstrFileName,
[in] BSTR bstrSection, [in] long lIndex);
};
[
object,
uuid(697F8103-0494-11d6-A2B0-0060B0FBD872),
helpstring("IHPCUEWndProc Interface"),
pointer_default(unique)
]
interface IHPCUEWndProc : IUnknown
{
[helpstring("method CUEComWndProc")] HRESULT CUEComWndProc ([in] long lWnd, [in] UINT Msg, [in] WPARAM wParam, [in] LPARAM lParam, [out] LPARAM * lRetVal);
};
[
object,
uuid(697F8104-0494-11d6-A2B0-0060B0FBD872),
dual,
helpstring("DIHPCUECtxInfoPlugIn Interface"),
pointer_default(unique)
]
interface DIHPCUECtxInfoPlugIn : IDispatch
{
[propget, id(1), helpstring("property ContextID")] HRESULT ContextID ([out, retval] BSTR *pVal);
[propput, id(1), helpstring("property ContextID")] HRESULT ContextID ([in] BSTR newVal);
[propget, id(2), helpstring("property BaselineDataFileName")] HRESULT BaselineDataFileName ([out, retval] BSTR *pVal);
[propput, id(2), helpstring("property BaselineDataFileName")] HRESULT BaselineDataFileName ([in] BSTR newVal);
[propget, id(3), helpstring("property DataFileName")] HRESULT DataFileName ([out, retval] BSTR *pVal);
[propput, id(3), helpstring("property DataFileName")] HRESULT DataFileName ([in] BSTR newVal);
[propget, id(4), helpstring("property Derivative")] HRESULT Derivative ([out, retval] BSTR *pVal);
[propput, id(4), helpstring("property Derivative")] HRESULT Derivative ([in] BSTR newVal);
[ id(51), helpstring("method InitializePlugIn")] HRESULT InitializePlugIn ([in] long hWndParent, [in] IUnknown * punkParent);
[ id(52), helpstring("method TerminatePlugIn")] HRESULT TerminatePlugIn (void);
};
typedef enum {HPCUE_UISelectionTypeTypeUndefined = 0,
HPCUE_UISelectionTypeMenuItem = 1,
HPCUE_UISelectionTypeIconItem = 2,
HPCUE_UISelectionTypeHighestIndex,
} HPCUE_UISelectionTypeEnum;
// *** 20021008 ckw: Moved to TrayApp VOB
// typedef enum {HPCUE_TAEventTypeUndefined = 0,
// HPCUE_TAEventTypePoll = 1,
// HPCUE_TAEventTypeDeviceChange = 2,
// HPCUE_TAEventTypePowerBroadcast = 3,
// HPCUE_TAEventTypeUserSwitch = 4,
// HPCUE_TAEventTypeSystemShutdown = 5,
// HPCUE_TAEventTypeHighestIndex,
// } HPCUE_TAEventTypeEnum;
//
// [
// object,
// uuid(697F8105-0494-11d6-A2B0-0060B0FBD872),
// dual,
// helpstring("DIHPCUETrayAppPlugIn Interface"),
// pointer_default(unique)
// ]
// interface DIHPCUETrayAppPlugIn : IDispatch
// {
// [propget, id(1), helpstring("property EventMask")] HRESULT EventMask ([out, retval] long *pVal);
// [propget, id(2), helpstring("property PollInterval")] HRESULT PollInterval ([out, retval] long *pVal);
// [propget, id(3), helpstring("property NextPoll")] HRESULT NextPoll ([out, retval] long *pVal);
// [propput, id(3), helpstring("property NextPoll")] HRESULT NextPoll ([in] long newVal);
// [propget, id(4), helpstring("property ResourceFileName")] HRESULT ResourceFileName ([out, retval] BSTR *pVal);
// [propget, id(5), helpstring("property TrayAppCtxList")] HRESULT TrayAppCtxList ([out, retval] LPDISPATCH *pVal);
//
// [ id(51), helpstring("method InitializePlugIn")] HRESULT InitializePlugIn ([in] long hWndParent, [in] IUnknown * punkParent);
// [ id(52), helpstring("method TerminatePlugIn")] HRESULT TerminatePlugIn (void);
//
// [ id(61), helpstring("method UISelection")] HRESULT UISelection ([in] HPCUE_UISelectionTypeEnum eUISelection, [in] LPDISPATCH pdispItem);
// [ id(62), helpstring("method OnEvent")] HRESULT OnEvent ([in] HPCUE_TAEventTypeEnum eTAEvent, [in] long wParam, [in] long lParam);
// };
// *** 20021008 ckw: Moved to TrayAppObjs VOB
// [
// object,
// uuid(7BAC5C0F-06DF-4e8d-A4B5-7E677CEBB33D),
// dual,
// helpstring("DIHPCUETrayAppCtxList Interface"),
// pointer_default(unique)
// ]
// interface DIHPCUETrayAppCtxList : IDispatch
// {
// [propget, id(DISPID_NEWENUM), helpstring("property _NewEnum")] HRESULT _NewEnum ([out, retval] LPUNKNOWN *pVal);
// [propget, id(DISPID_VALUE), helpstring("property Item")] HRESULT Item ([in] long lIndex, [out, retval] VARIANT *pVal);
// [propget, id(1), helpstring("property Count")] HRESULT Count ([out, retval] long *pVal);
// [ id(3), helpstring("method Find")] HRESULT Find ([in] BSTR bstrContextID, [out, retval] LPDISPATCH *ppdispTrayAppCtx);
// [ id(4), helpstring("method Add")] HRESULT Add ([in] LPDISPATCH pdispTrayAppCtx);
// [ id(5), helpstring("method Remove")] HRESULT Remove ([in] BSTR bstrContextID);
// };
// *** 20021008 ckw: Moved to TrayAppObjs VOB
// [
// object,
// uuid(687CED72-F18E-4bbd-BBD5-E9C4B81AF977),
// dual,
// helpstring("DIHPCUETrayAppCtx Interface"),
// pointer_default(unique)
// ]
// interface DIHPCUETrayAppCtx : IDispatch
// {
// [propget, id(1), helpstring("property ContextID")] HRESULT ContextID ([out, retval] BSTR *pVal);
// [propput, id(1), helpstring("property ContextID")] HRESULT ContextID ([in] BSTR newVal);
// [propget, id(2), helpstring("property ContextName")] HRESULT ContextName ([out, retval] BSTR *pVal);
// [propput, id(2), helpstring("property ContextName")] HRESULT ContextName ([in] BSTR newVal);
// [propget, id(3), helpstring("property Icon")] HRESULT Icon ([out, retval] LPDISPATCH *pVal);
// [propput, id(3), helpstring("property Icon")] HRESULT Icon ([in] LPDISPATCH newVal);
// [propget, id(4), helpstring("property MenuItems")] HRESULT MenuItems ([out, retval] LPDISPATCH *pVal);
// [propput, id(4), helpstring("property MenuItems")] HRESULT MenuItems ([in] LPDISPATCH newVal);
// [propget, id(5), helpstring("property TrayAppPlugIn")] HRESULT TrayAppPlugIn ([out, retval] LPDISPATCH *pVal);
// [propput, id(5), helpstring("property TrayAppPlugIn")] HRESULT TrayAppPlugIn ([in] LPDISPATCH newVal);
// };
// *** 20021008 ckw: Moved to TrayApp VOB
// typedef enum { HPCUE_IconStateUndefined = 0,
// HPCUE_IconStateHighestIndex,
// } HPCUE_IconStateEnum;
//
// [
// object,
// uuid(272A4746-4798-43be-B8A9-BA80484685B9),
// dual,
// helpstring("DIHPCUEIcon Interface"),
// pointer_default(unique)
// ]
// interface DIHPCUEIcon : IDispatch
// {
// [propget, id(1), helpstring("property ContextID")] HRESULT ContextID ([out, retval] BSTR *pVal);
// [propput, id(1), helpstring("property ContextID")] HRESULT ContextID ([in] BSTR newVal);
// [propget, id(2), helpstring("property IconID")] HRESULT IconID ([out, retval] long *pVal);
// [propput, id(2), helpstring("property IconID")] HRESULT IconID ([in] long newVal);
// [propget, id(3), helpstring("property Icon")] HRESULT Icon ([out, retval] VARIANT *pVal);
// [propput, id(3), helpstring("property Icon")] HRESULT Icon ([in] VARIANT newVal);
// [propget, id(4), helpstring("property IconCaption")] HRESULT IconCaption ([out, retval] BSTR *pVal);
// [propput, id(4), helpstring("property IconCaption")] HRESULT IconCaption ([in] BSTR newVal);
// [propget, id(5), helpstring("property IconState")] HRESULT IconState ([out, retval] HPCUE_IconStateEnum *pVal);
// [propput, id(5), helpstring("property IconState")] HRESULT IconState ([in] HPCUE_IconStateEnum newVal);
// [propget, id(6), helpstring("property ExtraData")] HRESULT ExtraData ([out, retval] long *pVal);
// [propput, id(6), helpstring("property ExtraData")] HRESULT ExtraData ([in] long newVal);
// };
[
object,
uuid(697F8106-0494-11d6-A2B0-0060B0FBD872),
dual,
helpstring("DIHPCUEDirectorPlugIn Interface"),
pointer_default(unique)
]
interface DIHPCUEDirectorPlugIn : IDispatch
{
[propget, id(1), helpstring("property ProductClassName")] HRESULT ProductClassName ([out, retval] BSTR *pVal);
[propput, id(1), helpstring("property ProductClassName")] HRESULT ProductClassName ([in] BSTR newVal);
[propget, id(2), helpstring("property ResourceFileName")] HRESULT ResourceFileName ([out, retval] BSTR *pVal);
[propget, id(3), helpstring("property DirectorCtxList")] HRESULT DirectorCtxList ([out, retval] LPDISPATCH *pVal);
[ id(51), helpstring("method InitializePlugIn")] HRESULT InitializePlugIn ([in] long hWndParent, [in] IUnknown * punkParent);
[ id(52), helpstring("method TerminatePlugIn")] HRESULT TerminatePlugIn (void);
[ id(61), helpstring("method UISelection")] HRESULT UISelection ([in] HPCUE_UISelectionTypeEnum eUISelection, [in] LPDISPATCH pdispItem);
[ id(62), helpstring("method GetDirectorContext")] HRESULT GetDirectorContext ([in] BSTR bstrContextID, [in] LPDISPATCH pdispDirectorCtx);
};
[
object,
uuid(697F8107-0494-11d6-A2B0-0060B0FBD872),
dual,
helpstring("DIHPCUEFltRecPlugIn Interface"),
pointer_default(unique)
]
interface DIHPCUEFltRecPlugIn : IDispatch
{
[propget, id(1), helpstring("property ProductClassName")] HRESULT ProductClassName ([out, retval] BSTR *pVal);
[propput, id(1), helpstring("property ProductClassName")] HRESULT ProductClassName ([in] BSTR newVal);
[propget, id(2), helpstring("property FltRecCtxList")] HRESULT FltRecCtxList ([out, retval] LPDISPATCH *pVal);
[ id(51), helpstring("method InitializePlugIn")] HRESULT InitializePlugIn ([in] long hWndParent, [in] IUnknown * punkParent);
[ id(52), helpstring("method TerminatePlugIn")] HRESULT TerminatePlugIn (void);
[ id(61), helpstring("method UploadDeviceCounters")] HRESULT UploadDeviceCounters (void);
};
typedef enum {HPCUE_PhotoCardTypeUndefined = 0,
HPCUE_PhotoCardTypeCompactFlash = 1,
HPCUE_PhotoCardTypeSmartMedia = 2,
HPCUE_PhotoCardTypeMemoryStick = 3,
HPCUE_PhotoCardTypeReserved = 4,
HPCUE_PhotoCardTypeHighestIndex,
} HPCUE_PhotoCardTypeEnum;
[
object,
uuid(697F8108-0494-11d6-A2B0-0060B0FBD872),
dual,
helpstring("DIHPCUEPhotoCardPlugIn Interface"),
pointer_default(unique)
]
interface DIHPCUEPhotoCardPlugIn : IDispatch
{
[propget, id(1), helpstring("property ContextID")] HRESULT ContextID ([out, retval] BSTR *pVal);
[propput, id(1), helpstring("property ContextID")] HRESULT ContextID ([in] BSTR newVal);
[propget, id(2), helpstring("property DriveLetter")] HRESULT DriveLetter ([out, retval] BSTR *pVal);
[propput, id(2), helpstring("property DriveLetter")] HRESULT DriveLetter ([in] BSTR newVal);
[propget, id(3), helpstring("property UploadDirectory")] HRESULT UploadDirectory ([out, retval] BSTR *pVal);
[propput, id(3), helpstring("property UploadDirectory")] HRESULT UploadDirectory ([in] BSTR newVal);
[propget, id(4), helpstring("property PhotoCardType")] HRESULT PhotoCardType ([out, retval] HPCUE_PhotoCardTypeEnum *pVal);
[propget, id(5), helpstring("property ProtocolVersion")] HRESULT ProtocolVersion ([out, retval] long *pVal);
[propget, id(6), helpstring("property PhotoFiles")] HRESULT PhotoFiles ([out, retval] LPDISPATCH *pVal);
[ id(51), helpstring("method InitializePlugIn")] HRESULT InitializePlugIn ([in] long hWndParent, [in] IUnknown * punkParent);
[ id(52), helpstring("method TerminatePlugIn")] HRESULT TerminatePlugIn (void);
[ id(61), helpstring("method UploadFiles")] HRESULT UploadFiles (void);
};
[
object,
uuid(697F8109-0494-11d6-A2B0-0060B0FBD872),
dual,
helpstring("DIHPCUEPhotoCardPlugInEvent Interface"),
pointer_default(unique)
]
interface DIHPCUEPhotoCardPlugInEvent : IDispatch
{
[ id(1), helpstring("method PhotoFileUploadProgress")] HRESULT PhotoFileUploadProgress ([in] BSTR bstrContextID, [in] BSTR bstrFileName, [in] long lBytesUploaded, [in] long lTotalBytesToUpload);
};
[
object,
uuid(697F810A-0494-11d6-A2B0-0060B0FBD872),
dual,
helpstring("DIHPCUEScanToPlugIn Interface"),
pointer_default(unique)
]
interface DIHPCUEScanToPlugIn : IDispatch
{
[propget, id(1), helpstring("property ContextID")] HRESULT ContextID ([out, retval] BSTR *pVal);
[propput, id(1), helpstring("property ContextID")] HRESULT ContextID ([in] BSTR newVal);
[propget, id(2), helpstring("property ScanToList")] HRESULT ScanToList ([out, retval] LPDISPATCH *pVal);
[ id(51), helpstring("method InitializePlugIn")] HRESULT InitializePlugIn ([in] long hWndParent, [in] IUnknown * punkParent);
[ id(52), helpstring("method TerminatePlugIn")] HRESULT TerminatePlugIn (void);
[ id(61), helpstring("method UploadDeviceScanToList")] HRESULT UploadDeviceScanToList (void);
[ id(62), helpstring("method DownloadDeviceScanToList")] HRESULT DownloadDeviceScanToList (void);
};
[
object,
uuid(697F810B-0494-11d6-A2B0-0060B0FBD872),
helpstring("IHPCUEEventCallback Interface"),
pointer_default(unique)
]
interface IHPCUEEventCallback : IUnknown
{
[helpstring("method SysNotify")] HRESULT SysNotify ([in] BSTR bstrEventID, [in] long lSubscriberID, [in] long lUserData);
[helpstring("method OIDLongNotify")] HRESULT OIDLongNotify ([in] long eOID, [in] long lValue, [in] long lSubscriberID, [in] long lUserData);
[helpstring("method OIDStringNotify")] HRESULT OIDStringNotify ([in] long eOID, [in] BSTR bstrValue, [in] long lSubscriberID, [in] long lUserData);
[helpstring("method HeartbeatNotify")] HRESULT HeartbeatNotify ([in] long lEventID, [in] long lHeartbeats, [in] long lSubscriberID, [in] long lUserData);
[helpstring("method ScheduleNotify")] HRESULT ScheduleNotify ([in] DATE dateEventID, [in] long lSubscriberID, [in] long lUserData);
[helpstring("method LongNotify")] HRESULT LongNotify ([in] long lEventID, [in] long lSubscriberID, [in] long lUserData);
[helpstring("method StringNotify")] HRESULT StringNotify ([in] BSTR bstrEventID, [in] long lSubscriberID, [in] long lUserData);
[helpstring("method OMLongNotify")] HRESULT OMLongNotify ([in] BSTR bstrOMID, [in] long lValue, [in] long lSubscriberID, [in] long lUserData);
[helpstring("method OMStringNotify")] HRESULT OMStringNotify ([in] BSTR bstrOMID, [in] BSTR bstrValue, [in] long lSubscriberID, [in] long lUserData);
};
[
uuid(697F8000-0494-11d6-A2B0-0060B0FBD872),
version(1.0),
helpstring("CueComInfc 1.0 Type Library")
]
library CUECOMINFCLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
};
I import it in another idl, a.idl using:
import "CueComInfc.idl"
When i build the project with a.idl, i get the following error:
CueComInfc.idl
midl\oleaut32.dll : error MIDL2020 : error generating type library : LayOut failed : DIHPAiOCopyRestriction2
Please provide info on how to resolve this error
Swati
|
|
|
|
|
Hi
I want to ask one question regarding excel sheet reading
Can we use OLEDB connection for reading the Excel sheet which have 1000 rows
I am confused which one i should use because of performance issue and faclities issue
|
|
|
|
|
Hi,
I have a client application that is calling a method from an ActiveX control. Inside the ActiveX control I have a worker thread doing some additional processing. However, the ActiveX method that is called from the client application is blocking my worker thread. I need to verify a global value from the worker thread while inside that ActiveX method call? Any ideas on how to this?
Thanks
|
|
|
|
|
Hello Anthony,
>> However, the ActiveX method that is called from the client application is blocking my worker thread.
Is your worker thread calling some method from your ActiveX control ? Please elaborate a little more on this.
Thanks,
Bio.
|
|
|
|
|
You say "the ActiveX method that is called from the client application is blocking my worker thread": how so?
Steve
|
|
|
|
|