我想掛鉤在Ishellfolder中的函數enumobjects。 我這樣做是因爲我想在資源管理器中顯示用戶不存在的文件。 我的成功掛鉤FindNextFile並用FindFirstFile但不幸的是這個功能可以根據這個問題Which APIs are used by explorer.exe in Windows 7 to list files?Hook ishellfolder enumobjects
現在我試着鉤的IShellFolder :: EnumObjects因此通過資源管理器並不總是叫我勾
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!");
}
}
但它從來沒有進去,如果 人知道爲什麼嗎?
我的是,我已經勾用FindFirstFile(FindFirstFileEx)寫入/ FindNextFile/FindClose。我不想用它們!我用魔杖鉤住他們。並在Windows 7的Windows資源管理器中不要再使用它們在每個瀏覽到特定的目錄 – Beno
我不想陷入事件。我想要替換由enumObjects返回的值 – Beno