![]() |
#13 |
int 20h
|
Всем спасибо огромное за помощь разобралися. Вопрос снимается.
blokva Вы правы. Так мы и поступили Кому интересно как это реализовать вот пример, на вход передаем COM объект message на выходе получаем строку адреса отправителя. Маленько геморно получилось, но работает ![]() Процедуру combyDisp взял тут X++: str SenderEMail(Com _message) { #define.PR_SENDER_EMAIL_ADDRESS(0x0C1F001F) #Define.CdoPR_SENDER_EMAIL_ADDRESS(0x39FE001E) #Define.CdoPR_EMAIL_ADDRESS(0x3003001E) #Define.CdoPR_ADDRTYPE(0x3002001E) COMVariant to; COM recipients; COM fields; COM obj; COM comAddressType; COM field; ComVariant fieldId, fieldName; ComVariant toField; ComVariant addressType; str strAddressType; str s; COM combydisp(COMVariant _var) { ; if (_var.variantType() != COMVariantType::VT_DISPATCH) throw Error(strfmt("bad variant type (%1)",_var.variantType())); if (!_var.iDispatch()) return null; return COM::createFromVariant(_var); } ; recipients = combydisp(_message.Sender()); fields = combydisp(recipients.Fields()); comAddressType = combydisp(fields.Item(#CdoPR_ADDRTYPE)); addressType = comAddressType.Value(); strAddressType = addressType.bStr(); switch(strAddressType) { case "SMTP" : obj = combydisp(fields.Item(#CdoPR_EMAIL_ADDRESS)); toField = obj.Value(); break; default: obj = combydisp(fields.Item(#CdoPR_SENDER_EMAIL_ADDRESS)); toField = obj.Value(); break; } s = toField.bStr(); return s; }
__________________
It's just my Unhopelessnessabilityerism ![]() Trying to debug my mind ![]() |
|
Теги |
ax2009, exchange, mail, winapi, почта |
|
|