//////////////////////////////////////////////////////////// //Added Headers: //////////////////////////////////////////////////////////// #include <comdef.h> #include <atlbase.h> /////////////////////////////////////////////////////////// //Added for MSMQ: /////////////////////////////////////////////////////////// #import "mqoa.dll" no_namespace, named_guids typedef strUCt _DATA { int _n; char _str; }_DATA; //main: { .. .. .. .. hr = pisQI->raw_Open(MQ_PEEK_Access,MQ_DENY_NONE,&pisQueue); IMSMQMessagePtr piMessage; // 获取MSMQ队列中的一个消息: piMessage = pisQueue->PeekCurrent(); _DATA *msg = new _DATA(); // 解析函数: ChangeVariant2Struct(CComVariant(piMessage->Body), msg); .. .. } // ChangeVariant2Struct函数的定义: // 第一个参数: // 类型:CComVariant // 作用:源 // 第二个参数: // 类型:_DATA* // 作用:接收者 HRESULT ChangeVariant2Struct (CComVariant &var, _DATA *DP) { SAFEARRAY* psa; BYTE HUGEP *lpb; psa = var.parray; SafeArrayAccessData(psa, (void HUGEP **)&lpb); CopyMemory((LPVOID)DP, (LPVOID)lpb, 8); SafeArrayUnaccessData(psa); return S_OK; } |