iCopyHookA::CopyCallback 方法 (shlobj.h)

确定是否允许 Shell 移动、复制、删除或重命名文件夹或打印机对象。

语法

UINT CopyCallback(
  HWND  hwnd,
  UINT  wFunc,
  UINT  wFlags,
  PCSTR pszSrcFile,
  DWORD dwSrcAttribs,
  PCSTR pszDestFile,
  DWORD dwDestAttribs
);

参数

hwnd

复制挂钩处理程序应将窗口的句柄用作处理程序可能需要显示的任何用户界面元素的父级。 如果在 wFunc 中指定了 FOF_SILENT,该方法应忽略此参数。

wFunc

要执行的操作。 此参数可以是 SHFILEOPSTRUCT 结构的 wFunc 成员下列出的值之一。

wFlags

控制操作的标志。 此参数可以是 SHFILEOPSTRUCT 结构的 fFlags 成员下列出的一个或多个值。

对于打印机复制挂钩,此值是在 Shellapi.h 中定义的以下值之一。

说明
PO_DELETE 正在删除打印机。 pszSrcFile 指向指定打印机的完整路径。
PO_RENAME 正在重命名打印机。 pszSrcFile 参数指向打印机的新名称。 pszDestFile 参数指向旧名称。
PO_PORTCHANGE 不支持。 请勿使用。
PO_REN_PORT 不支持。 请勿使用。

pszSrcFile

指向包含源文件夹名称的字符串的指针。

dwSrcAttribs

源文件夹的属性。 此参数可以是头文件中定义的任意文件属性标志 (FILE_ATTRIBUTE_*) 的组合。 请参阅 文件属性常量

pszDestFile

指向包含目标文件夹名称的字符串的指针。

dwDestAttribs

目标文件夹的属性。 此参数可以是头文件中定义的任意文件属性标志 (FILE_ATTRIBUTE_*) 的组合。 请参阅 文件属性常量

返回值

返回一个整数值,该值指示 Shell 是否应执行该操作。 下列类型作之一:

说明
IDYES 允许操作。
IDNO 阻止对此文件夹的操作,但继续执行已 (批准的任何其他操作,例如,) 批量复制操作。
IDCANCEL 阻止当前操作并取消任何挂起的操作。

注解

Shell 调用为文件夹或打印机对象注册的每个复制挂钩处理程序,直到调用所有处理程序,或者直到其中一个处理程序返回 IDNO 或 IDCANCEL。

文件夹的复制挂钩处理程序在以下项下注册:

HKEY_CLASSES_ROOT/Directory/Shellex/CopyHookHandlers/your_copyhook/{copyhook CLSID value}

打印机的复制挂钩处理程序在以下密钥下注册。

HKEY_CLASSES_ROOT/Printers/Shellex/CopyHookHandlers/your_copyhook/{copyhook CLSID value}

调用此方法时,Shell 会直接初始化 ICopyHookA 接口,而无需先使用 IShellExtInit 接口。

要求

要求
Header shlobj.h