Mic*_*eld 6 c# interop ifilter
我正在尝试编写一个C#实用程序,它模仿filtdump.exeWindows Search SDK 的行为(因为filtdump它本身似乎不是可再发行的.)我遇到了矛盾和/或不存在的文档和技术问题的组合我似乎无法追查.我希望有人可以帮助消除这些障碍中的一个或另一个......
根据MSDN,filtdump用于ILoadFilter::LoadIFilter加载它的IFilter.我认为MSDN撒谎,因为它声称ILoadFilter::LoadIFilter只存在于Windows 7上,但filtdump在earler OS上工作正常.进程监视器表明,它实际上是调用LoadIFilter()从query.dll,所以这是我在做什么:
public static class NativeMethods
{
// From Windows SDK v7.1, NTQuery.h
[DllImport("query.dll", CharSet = CharSet.Unicode)]
public static extern int LoadIFilter(
string pwcsPath,
[MarshalAs(UnmanagedType.IUnknown)]
ref object pUnkOuter,
ref IFilter ppIUnk);
}
object iUnknown = null;
IFilter filter = null;
var result = NativeMethods.LoadIFilter(args[0], ref iUnknown, ref filter);
if (result != ResultCodes.S_OK)
{
Console.WriteLine("Failed to load an IFilter for {0}: {1}", args[0], result);
return;
}
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,这个应用程序filtdump给我相同的结果 - 他们可以打开文本,从Word文档和Outlook电子邮件中提取和提取文本,并且两者都在没有IFilter的同一组其他文档上失败.但是,PDF正在给我一个问题.Filtdump设法打开并从我抛出的大部分PDF中提取文本,但是我用自己的应用程序尝试的每一个PDF都给出了HRESULT为0x80004005,E_FAIL.
这是同样的错误了这个问题,但我发现它在每一个 PDF,并且filtdump是没有,所以我知道的IFilter正在至少一些文件.有没有人之前做过这种事情的PDF可以看出我做错了什么?
| 归档时间: |
|
| 查看次数: |
3457 次 |
| 最近记录: |