本来以为 在文件夹之间拷贝单文件会调用 IFileOperation::CopyItem, 结果不是...
调用的是 IFileOperation::CopyItems
MSDN确实这样说的
IFileOperation::CopyItem method
Declares a single item that is to be copied to a specified destination.
用ApiMonitor纪录,资源管理器调用IFileOperation的方法.
WinOS = Win7X64Sp1中文旗舰版
新建文件: IFileOperation::NewItem ( 0x000000000bfe9878, 128, "新建文本文档.txt", NULL, NULL )
文件改名: IFileOperation::RenameItem ( 0x00000000068863a8, "abc.txt", 0x000000000c0fee60 )
拷贝单文件到目录, 拷贝时无调用,粘贴时: IFileOperation::CopyItems ( 0x000000000c448b48, 0x0000000006894478 )
拷贝多文件到目录: IFileOperation::CopyItems
拷贝目录到目录: IFileOperation::CopyItems
删除单个或多个文件时 : IFileOperation::DeleteItems ( 0x000000000c448bb8 )
剪切单个文件: IFileOperation::MoveItems ( 0x000000000bf9afa8, 0x00000000068949b8 )
还没试验出来 IFileOperation::CopyItem 什么时候会被资源管理器调用.
Win7X86家庭普通版
WinXpSp3
WinXp拷贝文件, 文件夹, 会调用 CopyFileExW 一个一个的拷贝文件
BOOL CopyFileExW (
LPCTSTR lpExistingFileName,
LPCTSTR lpNewFileName,
LPPROGRESS_ROUTINE lpProgressRoutine,
LPVOID lpData,
LPBOOL pbCancel,
DWORD dwCopyFlags
);