pinvoke,sendmessagebystring,从富文本中检索

时间:2010-08-17 20:27:29

标签: c# pinvoke

我有一种情况,我必须使用Windows API从另一个程序中的富文本框中检索文本;我想知道是否有任何方法可以从中获取“富文本”,而不仅仅是纯文本。

在此示例中,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 个答案:

答案 0 :(得分:1)

好消息:EM_STREAMOUT可帮助您检索具有格式的RTF。坏消息:如果不将DLL注入进程,就无法完成这项工作,因为它需要回调。您无法使 在C#中工作,需要本机C / C ++。我知道,没有帮助。