ICopyHookA 接口 (shlobj.h)
公开创建 复制挂钩处理程序的方法。 复制挂钩处理程序是一个 Shell 扩展,用于确定是否可以移动、复制、重命名或删除 Shell 文件夹或打印机对象。 Shell 在执行其中一个操作之前调用 ICopyHookA::CopyCallback 方法。
继承
ICopyHookA 接口继承自 IUnknown 接口。
方法
ICopyHookA 接口具有这些方法。
ICopyHookA::CopyCallback 确定是否允许 Shell 移动、复制、删除或重命名文件夹或打印机对象。 (ANSI) |
备注
复制挂钩处理程序是一个 OLE 进程内服务器, (dll) ,它本身不执行任务,但它确实批准或反对操作。 如果 Shell 从复制挂钩处理程序获得批准,它将执行文件系统操作。 复制挂钩处理程序不会通知操作是否成功,因此它们无法监视对文件夹对象执行的操作,除非使用 FindFirstChangeNotification 。
一个文件夹对象可以有多个复制挂钩处理程序。 例如,即使 Shell 已为特定文件夹对象注册了复制挂钩处理程序,你仍然可以注册自己的一个。 如果为对象注册了两个或更多个复制挂钩处理程序,则 Shell 只需在执行指定的文件系统操作之一之前调用其中每个处理程序。
Shell 直接初始化 ICopyHookA ,而无需先使用 IShellExtInit 接口。
CopyCallback 返回一个 int 值,该值指示 Shell 是否应执行该操作。 Shell 将调用为文件夹对象注册的每个复制挂钩处理程序,直到调用所有处理程序或其中一个处理程序返回 IDYES 以外的值。 处理程序返回 IDYES 以指定应执行操作,或返回 IDNO 或 IDCANCEL 以指定应停止操作。
如果希望能够控制何时或是否对给定对象执行这些文件系统操作,则实现复制挂钩处理程序。 例如,你可能希望在共享文件夹上使用复制挂钩处理程序。
不直接调用此 Shell 扩展。 在移动、复制、删除或重命名 Shell 文件夹对象之前,Shell 会调用 CopyCallback。
注意
shlobj.h 标头将 ICopyHook 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定。
要求
标头 | shlobj.h |