2010-08-17 49 views
1

我有一種情況,我必須使用Windows API從另一個程序中的富文本框中檢索文本;我想知道是否有辦法從中得到...'富文本',而不僅僅是純文本。pinvoke,sendmessagebystring,從富文本檢索

在此示例中,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

好消息:EM_STREAMOUT可以幫助您檢索具有格式的RTF。壞消息:如果不將DLL注入到進程中,你就無法完成這項工作,因爲它需要回調。你不能讓那個在C#中工作,需要本機C/C++。我知道,沒有幫助。

+0

該死的。有沒有辦法將行爲包裝到C++ dll中並將其加載到.NET中? – Ciel 2010-08-17 21:30:18