我有一个用非托管C ++编写的Outlook插件,它使用Outlook对象模型API。
代码将Microsoft Office文件(doc,docx,xls,xlsx等)和PDF附件复制到临时文件夹。然后代码操作这些文件,然后删除原始附件文件并附加处理过的文件。
最近,我们的一位客户报告了重复的附件问题。我进行了一些额外的诊断,这就是我所看到的:
以下是诊断功能的伪代码:
bool COutlookAttachmentHelper::AreThereDuplicatesOnInput(long count)
{
std::vector<std::wstring> vFileNames;
for(int i = count; i > 0; i--)
{
//get attachment filename
.....
// try to find it in the vector defined above
std::vector<std::wstring>::iterator findIter = std::find(vFileNames.begin(), vFileNames.end(), strFileName);
// if not found push it into the vector and return false
// if found, write the filename to the log file, pop up the message
// box, return true (cancel email).
}
}
如果找不到重复项,则代码会执行另一个循环,将感兴趣的文件复制到临时文件夹
for循环的构造方式相同:
以下是我在诊断日志文件中看到的内容:
搜索重复项
某些Word Document.DOC
image003.gif
image002.png
image001.png
搜索重复项结束
//下面是第二个循环的输出
//我过滤掉非Office和非PDF文件
某些Word Document.DOC
某些Word Document.DOC
我们无法在我们的实验室中重现此问题,其他任何客户都无法报告此问题。
任何人都有线索?
此致
迈克尔