Я использую VBA (в Access 2003) и хочу использовать механизм IFilter для извлечения текстового содержимого файлов. Я нашел хороший C++ пример кода, который выглядит относительно просто, но на данный момент я даже не могу получить вызов DLL для LoadIFilter для работы:
Declare Function LoadIFilter Lib "query.dll" (ByVal pwcsPath As String, _
ByVal pUnkOuter As Object, ByRef ppIFilter As Object) As Integer
Public Sub DocEx()
Dim ifilter As Object
Dim hresult As Integer
hresult = LoadIFilter("C:\temp\test.txt" & Chr(0), Nothing, ifilter)
Debug.Print hresult
End Sub
hresult всегда равен E_FAIL (= 16389).
Это мой синтаксис для DLL неверен или что-то еще?
ОТРЕДАКТИРОВАНО ДОБАВИТЬ: В конце концов я не решил эту проблему. Но поскольку моя единственная цель — взломать внутренний скрипт, мне достаточно просто вызвать инструмент FiltDump.exe, который поставляется в комплекте с Microsoft Platform SDK, и проанализировать его вывод. (Немного неуклюже, тем более, что FiltDump.exe настаивает на выводе сообщений об ошибках на стандартный вывод вместо стандартного stderr!)