gpt4 book ai didi

c++ - Hook ishellfolder enumobjects

转载 作者:太空宇宙 更新时间:2023-11-04 04:48:31 26 4
gpt4 key购买 nike

我正在尝试 Hook Ishellfolder 中的函数 enumobjects。我这样做是因为我想在资源管理器中显示用户不存在的文件。我成功 Hook 了 FindNextFile 和 FindFirstFile,但不幸的是,根据这个问题 Which APIs are used by explorer.exe in Windows 7 to list files?,这个函数并不总是由资源管理器调用

现在我尝试 Hook IShellFolder::EnumObjects 所以我 Hook

MyCoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID riid, LPVOID *ppv)

在这个函数中我有以下代码:

if (IsEqualCLSID(rclsid, (REFGUID) __uuidof (IShellFolder)) || 
IsEqualCLSID(rclsid, (REFGUID) __uuidof (IShellFolder2)) ||
IsEqualCLSID(rclsid, (REFGUID) CLSID_ShellDesktop) ||
IsEqualCLSID(rclsid, (REFGUID) IID_IShellFolder) )
{

PDEBUG(L"IID_IShellFolder.2");
IShellFolderCast *shellFolder = (IShellFolderCast *) *ppv;

orig_EnumObjects = (type_EnumObjects) GetInterfaceMethod(shellFolder->lpVtbl, 4);
if (!Mhook_SetHook((void **) &orig_EnumObjects, MyEnumObjects))
{
PDEBUG(L". CoCreateInstance. Failed to set EnumObjects!");
}else
{
PDEBUG(L". CoCreateInstance. success to set EnumObjects!");
}
}

但如果有人知道为什么吗?

最佳答案

下面列出了 Windows API 如何枚举目录中的文件。看here .

[编辑]在我的第一个条目中错过了你的问题的意图。您想知道如何在访问 iShellFolder 时捕获事件吗?你可能已经Looked Here ?。它有一些示例代码,并围绕我认为可能有用的内容讨论了主题。

关于c++ - Hook ishellfolder enumobjects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18361065/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com