pinvoke, sendmessagebystring, получение из форматированного текста - PullRequest
1 голос
/ 18 августа 2010

У меня есть ситуация, когда я должен использовать Windows API для извлечения текста из Rich Text Box в другой программе; Мне интересно, есть ли какой-нибудь способ получить ... "расширенный текст" из него, а не только простой текст.

В этом примере ptrHandle - это дескриптор управления RichText.

if (ptrHandle == null)
    return null;

if (ptrHandle == IntPtr.Zero)
    return null;

IntPtr ptrLength =
    SendMessage(ptrHandle, WM_GETTEXTLENGTH, IntPtr.Zero, IntPtr.Zero);

var nLen = ptrLength.ToInt32();

if (nLen <= 0)
    return null;
var strBuffer = new System.Text.StringBuilder(nLen + 1);

SendMessage(ptrHandle, WM_GETTEXT, new IntPtr(nLen + 1), strBuffer);

Это все сделано в C #. Он выводит текст просто отлично, но он лишен форматирования и тому подобное. Я надеялся, что смогу получить все это.

1 Ответ

1 голос
/ 18 августа 2010

Хорошие новости: EM_STREAMOUT помогает вам получить RTF, тот, который имеет форматирование.Плохая новость: вы не можете заставить это работать без внедрения DLL в процесс, поскольку для этого требуется обратный вызов.Вы не можете заставить работать в C #, требуется родной C / C ++.Я знаю, не полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...