我使用下面的代码来删除文件。它很好。调用SHFileOperation删除文件后奇怪的结果安装后MS Office2003
SHFILEOPSTRUCT FileOp;
ZeroMemory(&FileOp, sizeof(SHFILEOPSTRUCT));
FileOp.hwnd = m_hAppHandle;
FileOp.wFunc = FO_DELETE; //delete
FileOp.pFrom = szPath;
FileOp.pTo = NULL;
FileOp.fFlags = FOF_NOCONFIRMATION | FOF_NOERRORUI;
FileOp.fAnyOperationsAborted = FALSE;
FileOp.hNameMappings = NULL;
FileOp.lpszProgressTitle = NULL;
SHFileOperation(&FileOp);
但是rcently我发现了一个斯特朗事情,再现步骤如下:1. 安装WIN2000 2.安装MS的office2003
的在第一时间(和仅在第一次)我请“SHFileOperation”功能删除一个文件。然后系统WARNNING消息框显示
“Windows无法在这里创建一个快捷方式。你要放置快捷方式在桌面上呢? ”
不管我选择“OK”或“否”按钮关闭警告消息框。那么这样的警告消息框就不会再显示,即,在关闭警告消息框之后,我可以调用“SHFileOperation”功能来删除没有这种系统警告消息的文件。
这是真正的魔法,它只发生一次。
任何人都知道一些相关的信息?谢谢。
我已删除了MFC的标签,因为这个问题使用普通的Win32 API调用,没有MFC参与。 – Otherside 2010-02-23 09:58:37
我调试我的应用程序,我发现这个奇怪的现象是由我的错误造成的。 在我的应用程序中,分配给FileOp.pFrom(“FileOp.pFrom = szPath;”)的路径名是“C:xxx \ yy \\ zz”,而不是“c:xxx \ yy \ zz”。重复的“\”charchater使这种奇怪的行为引发。然而,我仍然困惑为什么这只是在我安装微软办公室后才发生的,而这只是发生一次。 – Chandler 2010-02-23 14:30:03