- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试 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/
我正在尝试 Hook Ishellfolder 中的函数 enumobjects。我这样做是因为我想在资源管理器中显示用户不存在的文件。我成功 Hook 了 FindNextFile 和 FindFi
我实现了Shell Namespace Extensions在我的申请中 我实现的接口(interface)之一是 IShellFolder 和 IShellFolder2 一切正常,除了当资源管理器
我正在尝试创建一个 shell 树控件。我不希望从 IShellFilder::EnumObjects 调用返回的所有项目都显示在树上,因为我需要过滤回收站和控制面板等项目。 我的代码是这样的: IS
我在我的应用程序中有非常不正常的工作。我正在使用以下代码枚举所有命名空间和一些根命名空间 - 例如 Nethood 工作非常慢 - 加载超过一分钟(!!)这仅在 Win7 上发生,在较旧的系统上加载是
在我正在处理的命名空间扩展项目中接收父窗口句柄让我抓狂。 用例如下: 用户通过windows资源管理器浏览到一个虚拟文件夹 用户执行搜索(上面的搜索框) 我需要在搜索开始前检索搜索框的文本。 我已经在
我有一个命名空间扩展,可以进行网络调用以显示其内容。 当资源管理器想要显示文件夹的内容时,它会在我的实现中调用 EnumObjects。当进行 webcall 时出错,我想将用户返回到我的 NSE 的
我是一名优秀的程序员,十分优秀!