Задался вопросом определения кодировки файла. Пошарив по просторам интернета наткнулся на пример:
http://www.codeproject.com/Articles/17201/Detect-Encoding-for-In-and-Outgoing-Text
Автор примера пишет следующее:
Detecting a code page from text is a very tricky task. But luckily, Microsoft provides the MLang API, in which the IMultiLang3 interface is used for outbound encoding detection.
Т.е мелкомягкие (Microsoft) уже сгородили свою библиотечку для этих целей. Пройдя по этам автора выполнил следующие действия:
c:\temp\>midl MLang.idl
C:\temp>midl MLang.idl > null
Microsoft (R) 32b/64b MIDL Compiler Version 6.00.0366
Copyright (c) Microsoft Corporation 1991-2002. All rights reserved.
MLang.idl
unknwn.idl
wtypes.idl
basetsd.h
guiddef.h
oaidl.idl
objidl.idl
oaidl.acf
C:\temp>tlbimp mlang.tlb /silent
В итоге используя командную строку 2005-ой студии получил библиотеку MultiLanguage.dll и mlang.tlb.
Почитав подробнее, понял, что мне нужен интерфейс IMultiLanguage3 с методами:
DetectOutboundCodePage (for strings)
DetectOutboundCodePageInIStream (for streams)
С интересом подгрузил TLB-шку в VB6 и тут же облом. Понял, что функции и объекты которые там есть не получается напрямую использовать. Шестая студия ругается на то, что:
Function or interface marked as restricted, or the function uses an Automation type not supported in Visual Basic
Как я понял, TLB-шка как и библиотека адаптирована для Си. Поэтому VB6 с ней дружить не хочет.
В связи с этим возник следующий вопрос: Можно ли её как-то подружить с VB6 наиболее простым способом ?
P.S Созданные файлы прилагаю