我正在使用c#template http://sourceforge.net/projects/sourcecookifier/files/other%20plugins/NppPlugin.NET.v0.5.zip/download编写一个记事本++插件。
有谁知道如何读取所有当前文档文本,因为我需要将所有文本读取为字符串?
有没有人知道读取当前文档文本的功能?
答案 0 :(得分:5)
引用Scintilla API文档可以让您指出正确的方向:
http://www.scintilla.org/ScintillaDoc.html#SCI_GETTEXT
您链接的演示项目有一个发送消息的示例。
答案 1 :(得分:2)
这段代码对我有用,使用你在Notepad ++ web上找到的Demo C#项目:
int length = (int) Win32.SendMessage(GetCurrentScintilla(), SciMsg.SCI_GETLENGTH, 0, 0);
IntPtr ptrToText = Marshal.AllocHGlobal(length+1);
Win32.SendMessage(GetCurrentScintilla(), SciMsg.SCI_GETTEXT, length, ptrToText);
string textAnsi = Marshal.PtrToStringAnsi(ptrToText);
Console.WriteLine(textAnsi);
Marshal.FreeHGlobal(ptrToText);
更新:http://www.scintilla.org/ScintillaDoc.html#SCI_GETTEXT
需要为行尾^^
分配一个额外的字节