Захотелось использовать объект IMultiLanguage2 из C#, но не получилось. Может кто подскажет...
Делаю так —
// в с++ коде использовал CLSID_CMultiLanguage, ProgID не нашел
// цифири получил с помощью StringFromGUID2(CLSID_CMultiLanguage, ole_str)
System.Guid guid = new System.Guid("275C23E2-3747-11D0-9FEA-00AA003F8646");
Type mlang_type = Type.GetTypeFromCLSID(guid);
// какой то объект создается, надеюсь тот что мне нужен
object mlang = Activator.CreateInstance(mlang_type);
// пытаюсь вызвать метод GetNumberOfCodePageInfo и получаю исключение
// "COM target does not implement IDispatch."
object enc_num = mlang.GetType().InvokeMember("GetNumberOfCodePageInfo",
BindingFlags.InvokeMethod, null, mlang, new object[1]);
где грабли?
добавил форматирование в надежде привлечь внимание
Захотелось использовать объект IMultiLanguage2 из C#, но не получилось. Может кто подскажет...
Делаю так —
// в с++ коде использовал CLSID_CMultiLanguage, ProgID не нашел
// цифири получил с помощью StringFromGUID2(CLSID_CMultiLanguage, ole_str)
System.Guid guid = new System.Guid("275C23E2-3747-11D0-9FEA-00AA003F8646");
Type mlang_type = Type.GetTypeFromCLSID(guid);
// какой то объект создается, надеюсь тот что мне нужен
object mlang = Activator.CreateInstance(mlang_type);
// пытаюсь вызвать метод GetNumberOfCodePageInfo и получаю исключение
// "COM target does not implement IDispatch."
object enc_num = mlang.GetType().InvokeMember("GetNumberOfCodePageInfo",
BindingFlags.InvokeMethod, null, mlang, new object[1]);
где грабли?
Здравствуйте, Hermun, Вы писали:
можно сделать что-то в таком духе:
[ComImport]
[Guid("275C23E2-3747-11D0-9FEA-00AA003F8646")]
class MultiLanguage
{
}
[ComImport]
[Guid("DCCFC164-2B38-11D2-B7EC-00C04F8F5D9A")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IMultiLanguage2
{
uint GetNumberOfCodePageInfo();
object GetCodePageInfo(uint uiCodePage, ushort LangId); // stub
uint GetFamilyCodePage(uint uiCodePage);
// other methods
}
MultiLanguage multiLanguage = new MultiLanguage();
IMultiLanguage2 multiLanguage2 = (IMultiLanguage2)multiLanguage;
uint n = multiLanguage2.GetNumberOfCodePageInfo();
uint familyCodePage = multiLanguage2.GetFamilyCodePage(1251);