Я использую VS 2008 C# Приложение Windows.Доступ к «Mapi32.dll» с помощью C#
У меня есть этот DLL-импорт, который я пытаюсь использовать.
[DllImport("Mapi32.dll", PreserveSig = true)]
private static extern void
WrapCompressedRTFStream(
[MarshalAs(UnmanagedType.Interface)]
UCOMIStream lpCompressedRTFStream,
uint ulflags,
[MarshalAs(UnmanagedType.Interface)]
out UCOMIStream lpUncompressedRTFStream
);
public const uint MAPI_MODIFY = 0x00000001;
public const uint STORE_UNCOMPRESSED_RTF = 0x00008000;
У меня есть сжатая строка, которая находится в CompressedRFTFormat.
Как передать строку в WrapCompressedRTFStream? Я не понимаю, что ожидает этот метод.
Я пытаюсь использовать его на кнопке.
RichText1.text = WrapCompressedRTFStream (_CompressedRichText.ToString(), что-то, что-то);
Первая ошибка, я получаю «не удается преобразовать из„строки“в«System.Runtime.InteropServices.UCOMIStream»
Я надеюсь, что кто-то, кто это понимает сообщения ответа, который помогает!
ОК, поэтому я получаю в той же ситуации, когда использую IStream.
[DllImport("Msmapi32.dll", PreserveSig = true)]
private static extern void WrapCompressedRTFStream(
[MarshalAs(UnmanagedType.Interface)]
IStream lpCompressedRTFStream,
uint ulflags,
[MarshalAs(UnmanagedType.Interface)]
out IStream lpUncompressedRTFStream
);
Настоящая проблема заключается в том, что я не понимаю, что/как обрабатывать вход и выход этого метода.
Вы не можете разжать без знания алгоритма сжатия – Midhat
Это формат сжатия microsoft OutlookRichText. –
@Midhat: это точка этой функции. Посмотрите параметры входа и выхода. – MSalters