在Rust的windows-rs中向COM Dispatch方法传参遇问题
Outlook MailItem Move方法调用报错问题
我尝试在Outlook MailItem的Dispatch对象上调用Move方法,需要传入MAPIFolder作为参数。目前可以正常调用或获取无参数的其他方法与属性,但所有传参尝试均出现各类错误。通过GUID确认,邮件对象为_MailItem,文件夹对象为MAPIFolder,也能获取到_MailItem.Move的dispid。根据官方文档,Move方法应接收单个MAPIFolder参数,但以下示例代码执行后返回HRESULT 0x80020009异常,描述为*“Property is read-only”*,我不清楚该异常指向哪个对象的哪个属性:
let email : IDispatch = ...; let folder : IDispatch = ...; let args = vec![VARIANT::from(folder)]; let dispparams = DISPPARAMS { rgvarg : args.as_mut_ptr() as *mut VARIANT, rgdispidNamedArgs : null_mut() as *mut i32, cArgs : 1, cNamedArgs : 0, }; let mut result = EXCEPINFO::default(); let mut exception = VARIANT::new(); unsafe { email.Invoke( move_dispid, // Method ID &GUID::zeroed(), // reserved LOCALE_USER_DEFAULT, // constant, 0x0400 0x01 | 0x08, // constant, Method | ByRef &dispparams as *const DISPPARAMS, Some(&mut result as *mut VARIANT), Some(&mut exception as *mut EXCEPINFO), None, ) };
内容的提问来源于stack exchange,提问作者ricky
相关产品推荐
相关产品推荐

